History log of /freebsd-10.0-release/usr.bin/make/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
259065 07-Dec-2013 gjb

- Copy stable/10 (r259064) to releng/10.0 as part of the
10.0-RELEASE cycle.
- Update __FreeBSD_version [1]
- Set branch name to -RC1

[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so
start releng/10.0 at '100' so the branch is started with
a value ending in zero.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


252679 04-Jul-2013 kevlo

Remove unnecessary cast to pid_t.


250719 16-May-2013 sjg

Reverse the sense of the test wrt bmake, and guard against
MK_BMAKE not being defined.


250699 16-May-2013 sjg

Build bmake by default.
If someone explicitly builds usr.bin/make while MK_BMAKE==yes,
install it as 'fmake'.

Reviewed by: brooks


243831 03-Dec-2012 jkim

Remove fictitious support for 80386-class CPUs from bsd.cpu.mk and make(1).
It was removed from head more than 8 years ago (see r137784 and r137785).

Reviewed by: imp, delphij, dim


241280 06-Oct-2012 avg

make: report :M or :N pattern in debug mode

MFC after: 12 days


239071 05-Aug-2012 dim

In usr.bin/make/var.c, function ParseModifier(), initialize the 'error'
variable to NULL, to avoid using it uninitialized in certain cases.

This fixes the following clang 3.2 warning:

usr.bin/make/var.c:1770:10: error: variable 'error' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
if (vp->execute) {
^~~~~~~~~~~
usr.bin/make/var.c:1777:10: note: uninitialized use occurs here
if (error)
^~~~~
usr.bin/make/var.c:1770:6: note: remove the 'if' if its condition is always true
if (vp->execute) {
^~~~~~~~~~~~~~~~~
usr.bin/make/var.c:1768:23: note: initialize the variable 'error' to silence this warning
const char *error;
^
= NULL

MFC after: 1 week


237282 20-Jun-2012 obrien

Correct typo in version.


236365 31-May-2012 obrien

Update date for r236338 & r236346.


236346 31-May-2012 obrien

Add "-V '${VAR}'" variable expansion from Portable Berkeley Make.

Submitted by: Simon Gerraty <sjg@juniper.net>


236338 30-May-2012 obrien

Deprecate the FreeBSD make's ":U" (to-upper case) and ":L" (to-lower case)
modifiers for ":tu" and ":tl" from OSF's ODE, which made its way into
NetBSD's make, which is the source for the Portable Berkeley Make.

Submitted by: Simon Gerraty <sjg@juniper.net>


235400 13-May-2012 joel

Minor mdoc nits.


235152 09-May-2012 imp

Make is part of the bootstrap path, so we need to guard against this
not being defined. Otherwise we don't make a new make when the old
make is incompatible.


234782 29-Apr-2012 kib

Add src.conf option WITH_SHARED_TOOLCHAIN to enable building the
toolchain binaries as dynamically linked. Option is disabled by
default.

Reviewed by: ru (previous version)
MFC after: 2 weeks


231544 12-Feb-2012 fjoe

Include target names in diagnostic output.

Submitted by: Garrett Cooper


230392 20-Jan-2012 rmh

Map foreign architecture names to FreeBSD naming convention.

Approved by: kib (mentor)


228992 30-Dec-2011 uqs

Spelling fixes for usr.bin/


228525 15-Dec-2011 fjoe

Revert r228521: sometimes job output is lost
(see tools/regression/usr.bin/make/execution/joberr test).

openpty(fd + 0, fd + 1,...) version does not have this problem but
it sometimes enters an infinite sleep in "ttywait" state in tty_drain()
when make(1) closes slave pty.


228521 15-Dec-2011 fjoe

job make: if stdout is a tty create a pty when running a command.


228157 30-Nov-2011 fjoe

- Fix segmentation fault when running "+command" when run with -jX -n due
to Compat_RunCommand() being called with `cmd' that is not on the node->commands
list
- Make ellipsis ("..." command) handling consistent: check for "..." command
in job make after variables expansion to match compat make behavior
- Fix empty command handling (after variables expansion and @+- modifiers
are processed): now empty commands are ignored in compat make and are not
printed in job make case
- Bump MAKE_VERSION to 5-2011-11-30-0


227172 06-Nov-2011 ed

Add missing static keywords to make(1)


227121 05-Nov-2011 jilles

make(1): obj dirs are physical paths so write `pwd -P` rather than `pwd`.

Regular pwd may return a pathname containing symlinks, but make does not use
such pathnames.


218909 21-Feb-2011 brucec

Fix typos - remove duplicate "the".

PR: bin/154928
Submitted by: Eitan Adler <lists at eitanadler.com>
MFC after: 3 days


216178 04-Dec-2010 uqs

Move most of the remaining USD/PSD/SMM papers into share/doc


213494 06-Oct-2010 imp

Remove hack needed by 6.x machines and older machines to run newer
makes on FreeBSD/pc98. The need for this hack has passed. If you are
one of the rare people that may need this, then you should setenv
MACHINE=pc98 as a workaround.


213493 06-Oct-2010 imp

Use more portable errx instead of errc. The latter doesn't buy us
anyting anyway, since the error EAGAIN's error message doesn't add
anything to the error strings that are there now.


209951 12-Jul-2010 emaste

Remove extraneous ;


207948 12-May-2010 brueffer

- Missing full stops
- Upper case the first character of an description
- Section headings do not need to be quoted. From OpenBSD's make.1, revision 1.81
- Plural of suffix is suffixes. From OpenBSD's make.1, revision 1.61
- s/seperating/separating/

PR: 135165
Submitted by: Alan R. S. Bueno <alan.bsd@gmail.com>
MFC after: 1 week


206241 06-Apr-2010 imp

Remove yet another vestage of alpha support.


203098 27-Jan-2010 ru

Eliminated nits from last commit.

OK'ed by: rodrigc


203055 27-Jan-2010 rodrigc

Partial merge of man page cleanups from NetBSD:

revision 1.91
Fri Nov 7 01:01:46 2003 UTC by lukem

Add some subsections in the VARIABLE ASSIGNMENTS section.

In the "modifier description" list, show each modifier with the leading `:'.
Rationale: it's hard to search for modifiers without it, and we already do
the same thing in the -options and .makecommands lists. I now find it much
easier to find the description for a modifier in the man page.

Obtained from: NetBSD


202070 11-Jan-2010 harti

Fix the previous commit (still not used to svn vs. cvs). Use the
define from paths.h for the default temporary directory and remove
and unneccessary getenv call.


202045 10-Jan-2010 harti

Make make respect the TMPDIR environment variable.

PR: bin/115447
Submitted by: Eugene Grosbein


201526 04-Jan-2010 obrien

Add ability to search up the directory hierarchy for the system directory.
Do by specifying ".../" with '-m' or MAKESYSPATH (new) environment variable.

Reviewed by: <sjg@NetBSD.org>
Obtained from: NetBSD (+ embellishment by me, sent back to NetBSD)


201456 04-Jan-2010 obrien

Report lines that ought to contain a ':' operator but start with a '.'
as "Unknown directive" sinze they are more likely to be .elseif (etc).
(NetBSD PR 37222).

Obtained from: NetBSD


201455 04-Jan-2010 obrien

Add check for subversion "original" marker.


201386 02-Jan-2010 ed

Build usr.bin/ with WARNS=6 by default.

Also add some missing $FreeBSD$ to keep svn happy.


201225 29-Dec-2009 ed

Add missing `void' keyword.


200630 17-Dec-2009 stas

- Partially revert r200417. config.h brings several definitions,
that appears to be actually used. Without config.h included
cross-build of world failed (at least for ARM).


200417 11-Dec-2009 delphij

Remove unnecessary includes.

Reviewed by: rodrigc


200120 05-Dec-2009 stefanf

Add a missing space to the error message when execvp() failed.


199419 17-Nov-2009 obrien

Catch up with r144020's /Dir_FindFile/Path_FindFile/


199404 17-Nov-2009 obrien

Garbage collect some old #ifdef'ed code from 1994 that causes vi's '%'
to be unable to find a match in Path_FindFile().


198199 18-Oct-2009 fjoe

Reset UPTODATE gnodes after remaking makefiles when make
is not going to be restarted: such nodes could be marked UPTODATE
without doing rebuild due to remakingMakefiles being TRUE.


198197 18-Oct-2009 fjoe

Exit with non-zero error code in case of errors
when make is run with -k and not parallel (compat) make is run.


194797 23-Jun-2009 delphij

Use strlcpy() instead of manually setting the last byte of the array to \0.


194217 14-Jun-2009 des

Add volatile to sig_atomic_t where it was missing.

MFC after: 1 week


190821 07-Apr-2009 fjoe

Avoid infinite loops when remaking makefiles not only
for Makefile targets but also for targets they depend on.


188075 03-Feb-2009 obrien

Partially revert r186559.


188001 02-Feb-2009 fjoe

Remove duplicate OPTFLAGS definition.


187995 02-Feb-2009 imp

Sort the options, per style(9).

Reviewed by: obrien@


187968 31-Jan-2009 imp

David doesn't consider the prior -s behavior a bug. Back out this
change.


187921 30-Jan-2009 imp

Unbreak make -s. There's about a 10% performance improvement with -s
in many environments. The recent --- blah --- reintroduction has
killed. That output makes almost no sense when all the other output
is silenced.


187475 20-Jan-2009 rdivacky

Remove inlining of functions that are used mostly in different object files.
This gets rid of gnu89 style inlining. Also silence gcc by assigning two
variables NULL. This lets use to remove NO_WERROR.

Approved by: kib (mentor)
Approved by: harti


187132 13-Jan-2009 obrien

Don't enable -Q by default - I've fixed the rescue build issue.


186831 06-Jan-2009 obrien

Note that r186713 also contained a change to VarAdd where we propagate the
newly created 'Var' back to the caller.
Also, back out an accidentally commented WIP comment.


186713 03-Jan-2009 obrien

+ Add the -Q be-quiet flag for parallel jobs.
- Enable -Q by default for the moment - there is something weird
going on in the rescue build.


186559 29-Dec-2008 obrien

1. Add the ability to tweak the token output before targets in job mode.
E.g., .MAKE.JOB.PREFIX=${.newline}---[${.MAKE.PID}]
would produce

---[1234] target ---

2. Added ${.newline} as a simple means of being able to include '\n' in the
assignment of .MAKE.JOB.PREFIX

Obtained from: NetBSD


186558 29-Dec-2008 obrien

Consistently use Var_SetGlobal().


186506 27-Dec-2008 trhodes

Fix up after last commit:

Bump doc date;
Kill hard sentence breaks;
Fix commas by moving them off their own line.


186502 26-Dec-2008 luigi

Clarify the behaviour of conditionals when dealing with comparisons.
In particular, point out that string comparison can only use != and ==
(how weird, given that the underlying call to strcmp returns more
information), that floating point values are correctly interpreted
as numbers, and that the left-hand side must be a variable expansion.

MFC after: 3 weeks


186279 18-Dec-2008 fjoe

Exit with error code 2 when run with -k (continue if errors) and build failed.


183465 29-Sep-2008 ache

Since in some cases (when found obsolete) 'make' can be builded earlier
at 'upgrade_checks' target, put arc4random_uniform() into
__FreeBSD_version ifdef.


181397 07-Aug-2008 ache

Use arc4random_uniform(3)


181021 30-Jul-2008 ed

Add POSIX -p flag to make(1).

This article [1] describes the -p flag for make(1):

Write to standard output the complete set of macro definitions and
target descriptions. The output format is unspecified.

We already support a similar flag (-d g1), but unlike -p, it still
executes commands. Our implementation just turns it into -d g1, but also
sets flag `printGraphOnly', which will cause make(1) to skip execution.

[1] http://www.opengroup.org/onlinepubs/009695399/utilities/make.html

Reviewed by: imp
PR: standards/99960


180065 27-Jun-2008 obrien

Note that the .POSIX special target disables the "Remaking Makefiles" feature.


177545 24-Mar-2008 ru

Fix splitting into words of the .for expression to allow for
spaces in values. Without this change, the following valid
call broke due to parsing of .MAKEFLAGS in bsd.symver.mk:

cd /usr/src/lib/libc && make -n DEBUG_FLAGS="-DFOO -DBAR"

Spotted by: Igor Sysoev
Submitted by: Maxim Dounin, ru
MFC after: 1 week


177541 24-Mar-2008 ru

Fix bugs in the previous revision.


177102 12-Mar-2008 obrien

If the special target .MAKEFILEDEPS exists, then enable the
"remaking makefiles" feature. Otherwise, follow traditional Pmake behavior.


177101 12-Mar-2008 obrien

If the special target .MAKEFILEDEPS exists, then enable the
"remaking makefiles" feature. Otherwise, follow traditional Pmake behavior.
(hash table will be regenerated and committed follow this commit)


176842 05-Mar-2008 yar

The non-POSIX environment variable MAKE was superseded
by MAKEFLAGS ages ago, so don't mention it in comments.

Tested with: cmp(1)


176839 05-Mar-2008 yar

Don't forget to set MAKEFLAGS in the childs' environment
from the .MAKEFLAGS global variable even if it's empty or
unset. This means setting MAKEFLAGS to just an empty string
in the latter case.

If not doing so, make(1) behaved inconsistently WRT MAKEFLAGS.
In particular, it would let a `-f foo' option down to sub-makes
if .MAKEFLAGS was unset. E.g.,

env MAKEFLAGS="-f mymakefile" make

would pass `-f mymakefile' down to sub-makes via their environment
(unless mymakefile added something to .MAKEFLAGS).
But any additional options appearing would change this behaviour to
not passing `-f mymakefile' to sub-makes, as in:

env MAKEFLAGS="-f mymakefile" make -D DUMMY

or

env MAKEFLAGS="-f mymakefile -D DUMMY" make

(unless mymakefile cleared .MAKEFLAGS).

Also make(1) would leave MAKEFLAGS at its initial value if the
makefile set .MAKEFLAGS to an empty value. I.e., it was impossible
to override MAKEFLAGS with an empty value. (Note well that makefiles
are not to touch MAKEFLAGS directly, they alter .MAKEFLAGS instead.
So make(1) can filter out things such as -f when copying MAKEFLAGS
to .MAKEFLAGS at startup. Direct modifications to MAKEFLAGS just go
nowhere.)

While the original intentions of the BSD make authors are somewhat
unclear here, the bug proves that NOT passing -f options down is
the settled behaviour because the opposite behaviour is totally
unreliable in the presence of any other options. In addition, not
passing down -f's found in the environment is consistent with doing
so WRT the command line.

Update the manpage accordingly and make the whole description of
MAKEFLAGS and .MAKEFLAGS more consistent as this change indeed
brings more consistency into the reliable behaviour of make(1).

Submitted by: ru (main.c)
Tested with: make world


176808 04-Mar-2008 obrien

It seems some don't care for the anchient joke. Add WITHOUT_OLD_JOKE
to your CFLAGS if you fall into this camp.


176807 04-Mar-2008 obrien

No need to tell make to DTRT with "make love", just do it.
Also remove the 2002/08/31 bootstrapping aid for upgrades from
year old (mid-2001) systems.


176799 04-Mar-2008 imp

<limits.h> is necessary for using INT_MIN, so included it here
explicitly rather than relying on name space pollution to pull it in
for us.

NB: The usage of INT_MIN is somewhat bogus and suspect to my eye, but this
commit doesn't address that issue.


176793 04-Mar-2008 yar

Move a stray paragraph on .Ev MAKEFLAGS to where it belongs.


176792 04-Mar-2008 yar

Revise the description of how .Ev MAKEFILE and .Va .MAKEFILE relate.
The most important point is that -f option(s) are never copied from
.Ev MAKEFILE to .Va .MAKEFILE by make(1), which is consistent with
handling the command line. (-f silently sit in .Ev MAKEFILE and go
to make's children unless overwritten via .Va .MAKEFILE)

Bump .Dd.


176789 04-Mar-2008 yar

Split descriptions of .Ev MAKEFILE and .Va .MAKEFLAGS for clarity.


176786 04-Mar-2008 imp

Note 7.0 was the first version that FreeBSD/pc98 had a MACHINE of pc98
instead of i386.


176785 04-Mar-2008 imp

Linux requires -D__dead2= and -D__unused= to get rid of the
sys/cdef.h-isms in the make source. The variant of linux I tried it
on doesn't have arc4random, so -Darc4random=random too.


174480 09-Dec-2007 imp

Use a clever definition of __FBSDID to allow building on !FreeBSD systems.


173919 25-Nov-2007 fjoe

Fix -jX when makefiles are remade.


173217 31-Oct-2007 yar

Give more details on the following topics:
o How global, command-line, and environment variables relate.
o What peculiarities the -f option has WRT ${MAKEFLAGS}.


170179 01-Jun-2007 fjoe

Change directory back to ${.CURDIR} when remaking Makefiles.

Pointed out by: ru


168893 20-Apr-2007 fjoe

Improve logging when -dm is specified: if the node is considered
out-of-date print not only "modified before source" message
but also the path of youngest source.


168892 20-Apr-2007 fjoe

When remaking makefiles check that mtime has actually changed.

This fixes infinite restart in the following case:

Makefile: foo

foo: bar
do-something

Unlike GNU make, BSD make considers "Makefile" node as remade even
if "foo" is up-to-date and was not actually rebuilt.
GNU make does not consider nodes without commands as remade if child nodes
were not actually rebuilt.

Most probably, more proper fix would be to bring BSD make behaviour in-line
with GNU make but this would be more intrusive change.


168671 12-Apr-2007 ru

In .error and .warning, prefer command-line variables
to globals, as per documentation.

Nudged by: Jeremie Le Hen


167339 08-Mar-2007 fjoe

Better English.


167330 08-Mar-2007 fjoe

Implement "Remaking Makefiles" feature:

After reading Makefile and all the files that are included using .include
or .sinclude directives (source Makefiles) make considers each source
Makefile as a target and tries to rebuild it. Both explicit and implicit
rules are checked and all source Makefiles are updated if necessary. If
any of the source Makefiles were rebuilt, make restarts from clean state.

To prevent infinite loops the following source Makefile targets are
ignored:
- :: targets that have no prerequisites but have commands
- ! targets
- targets that have .PHONY or .EXEC attributes
- targets without prerequisites and without commands

When remaking a source Makefile options -t (touch target), -q (query
mode), and -n (no exec) do not take effect, unless source Makefile is
specified explicitly as a target in make command line.
Additionally, system makefiles and .depend are not considered as a
Makefiles that can be rebuilt.

Reviewed by: harti


167329 08-Mar-2007 will

Fix a bug where the standard input (fifoFd == 0) was confused with an
error return from open(2), leading to an erroneous value of maxJobs and
a hung make when -f is standard input and -j is used.

PR: bin/101232
Submitted by: Nate Eldredge <nge@cs.hmc.edu>


165668 31-Dec-2006 maxim

o Grammar: is appears -> appears.

PR: docs/107306
Submitted by: Tomas Mozes
MFC after: 1 week


165628 29-Dec-2006 yar

Fix a group of typos:
preceed -> precede,
preceeded -> preceded,
preceeding -> preceding.

Submitted by: Andre Guibert de Bruet <andy@siliconlandmark.com>


163171 09-Oct-2006 ru

Don't go beyond the provided string when parsing the `\' character.

PR: bin/99985
Submitted by: Nate Eldredge
MFC after: 3 days


162816 29-Sep-2006 ru

Markup nit.


162792 29-Sep-2006 ru

Markup fixes.


160574 22-Jul-2006 obrien

Tell when a .include is processed with '-dd'.


160450 17-Jul-2006 obrien

VarAdd() already does the debug printing, so Var_Set() only needs to do it
in the case the var already exists.


160442 17-Jul-2006 obrien

whitespace fixing


158452 11-May-2006 ru

So, what's it supposed to say when you type "make love"?


157589 08-Apr-2006 fjoe

Update comment about var modifiers (add 'N' and 'O' descriptions).


157588 08-Apr-2006 fjoe

Add :u var modifier (remove adjacent duplicate words like uniq(1).

Reviewed by: harti
Obtained from: NetBSD (mostly)


153115 05-Dec-2005 ru

Prepare for MACHINE and hw.machine switching to "pc98" on FreeBSD/pc98.

Reviewed by: nyan


152982 01-Dec-2005 davidxu

Quickly fix brokeness in revision 1.157, that change was
free()ing stack memory which causes the program to abort,
and I can no longer make buildworld.


152969 30-Nov-2005 fjoe

- match_var: do not address memory at invalid address (`len' can be greater
than strlen(var) + 1)
- ReadMakeFile: prevent `fname' memory leak
- ReadMakeFile: prevent double free (caused by double fclose) --
ParsePopInput() closes input file

Reviewed by: harti


151419 17-Oct-2005 ru

Make sure that files included using ".include <foo>" are really
looked for in the system make file directory or in the specified
-m paths instead of always looking in the other -I and .PATH
specified paths. (Commit log shamelessly stolen from NetBSD.)

Reviewed by: yar


151351 14-Oct-2005 yar

Revise the manpage to a certain extent, mostly with respect to
make's processing of top-level and included makefiles. Point
out at make.conf(5) and __MAKE_CONF when telling about sys.mk.

Reviewed by: ru


151255 12-Oct-2005 yar

__MAKE_CONF doesn't really belong here because it is
a FreeBSD extension of sys.mk. A xref to make.conf(5)
will be enough here.

Requested by: ru


151201 10-Oct-2005 yar

Clarify the usage and effects of sys.mk, make.conf(5), and __MAKE_CONF.

MFC after: 2 weeks


151162 09-Oct-2005 scottl

Make sure that the created fifo gets deleted if the top level make instance
exits due to a signal.


150609 27-Sep-2005 ru

Remove redundant `\&' escapes.


150608 27-Sep-2005 ru

Fixup previous commit.


150601 26-Sep-2005 phk

Please ship the pointy hat to its home position.


150598 26-Sep-2005 phk

Update coordinates for "mph" hash generator now that it lives in ports.


150595 26-Sep-2005 phk

Add a .sinclude directive which does the exact same as .include, except
whine when the file cannot be found and opened.


149844 07-Sep-2005 harti

Fix the type of the variable 'debug'. It is used as a bitmap, so the
type should be int rather than Boolean.

PR: bin/84528
Submitted by: Max Okumoto <okumoto@ucsd.edu>
MFC after: 3 weeks


148580 31-Jul-2005 keramida

Fix all the spelling mistakes I could find in the man pages for words
that have at least 3 characters.

MFC after: 1 week
Thanks to: Music band ``Chingon''
for keeping me company while searching for these.


148151 19-Jul-2005 harti

Fix the "..." special command. If this command is found all further
commands for this target are appended to the .END target instead
of beeing executed now. They are executed when the graph is finished.
There was a bug with executing the .END target which came in when
doing conversion to LST_FOREACH() which caused make to dump core.

PR: bin/83698
Submitted by: Max Okumoto <okumoto@ucsd.edu>
MFC after: 3 days


147370 14-Jun-2005 ru

Markup and wording fixes.

Approved by: re (blanket)


146625 25-May-2005 harti

Under certain conditions the condition parser would go one past end of
the string. Until now this caused no harm, because the buffer code used
to tack two NULs onto buffers. With the new, soon to come, parsing code
this isn't the case anymore in all cases, so fix this.


146608 25-May-2005 harti

Document why there is a dependency of certain object files from the
Makefile.

Requested by: ru


146581 24-May-2005 harti

The caller of Var_Value() should not change the variable value. Make
this clear by constifying the return value.

Obtained from: DragonFlyBSD


146580 24-May-2005 harti

Get rid of the third argument to Var_Value() the pointer it pointed
to has always been set to NULL for some time now.

Obtained from: DragonFlyBSD


146579 24-May-2005 harti

Make shell.o dependend on the Makefile just in case someone changes
the default shell in the Makefile.


146578 24-May-2005 harti

Bump the warning level to 6.


146577 24-May-2005 harti

Fix a 64-bit warning by casting an int64_t to intmax_t and printing it
with %jd.


146574 24-May-2005 harti

Factor out ProcExec() into its own file and rename it to Proc_Exec() for
consistency with the rest of make.

Obtained from: DragonFlyBSD (except for the rename)


146572 24-May-2005 harti

Factor out all the .SHELL parsing related stuff into its own file and
rename the function to be consistent with the naming scheme in the rest
of make. No functional changes.

Obtained from: DragonFlyBSD (idea and most of shell.h)


146571 24-May-2005 harti

Use the name of the default shell instead of a numeric index to select
the default shell.

Idea from: DragonFlyBSD


146570 24-May-2005 harti

Another shell attribute 'unsetenv' that will cause to unsetenv("ENV")
before executing the shell. Until now this was done when the default
shell was the ksh. This failed if the default shell was sh or csh and
the user switched to ksh.


146563 24-May-2005 harti

Describe the meta and builtins attributes for the .SHELL special
target.


146562 24-May-2005 harti

Describe the -x option and the .WARN pseudo-target.


146560 24-May-2005 harti

Before doing any parsing parse the builtin shell specifications and
set the current shell to DEFSHELL. Put all these specifications into
a list. Add user specified new shells to this list. If the user
just selects one of the already know shells just pick the right one
off the list. This let's one do something like:

# Full specification of the user's shell. This also selects the shell.
.SHELL: name=myshell path=/somewhere/foo echo=loud ...

FOO != bar # use myshell here

.SHELL: name=sh

BAR != baz # use /bin/sh here

.SHELL: name=myshell # no need for full spec here.

# continue to use the user's special shell.


146557 24-May-2005 harti

Allow the .SHELL target to specify the list of shell meta characters and
the list of shell builtins. Both of these are needed for the compat
mode where make directly executes commands if the command line contains
neither a shell meta character nor a shell builtin. The list of builtins
is not changed, but csh has '@' added as a meta-character.

Initialize the default shell by parsing a string as one would specify
to the .SHELL target. So we get rid of the CShell clone of struct Shell which
just contained const char * where struct Shell had char *.

Add a debugging function for dumping a parsed shell description to
stdout.


146543 23-May-2005 harti

Make the ArgArray_Init() function visible to the rest of make.
It will soon be needed for the .SHELL parsing code.


146345 18-May-2005 harti

Get rid of global variables for argument vectors produced by brk_string()
introduce a struct that holds all the information about an argument
vector and pass that around.

Author: Max Okumoto <okumoto@ucsd.edu>
Obtained from: DragonFlyBSD


146338 18-May-2005 harti

Get rid of the ReturnStatus obscuration that was anyway used only
in two places. While here don't bother returning anything from
Lst_Replace - nobody ever checks the return code.

Suggested by: jmallet


146184 13-May-2005 harti

Use the print_flags function to print the OP_ flags of a target.
Give the function one more argument to decide whether it should
print the flags like a C-expression or just space-delimited.


146177 13-May-2005 harti

Move the Boolean and ReturnStatus stuff from sprite.h to util.h and
get rid of sprite.h.

Obtained from: DragonFlyBSD


146174 13-May-2005 harti

Make Shell_Init() static - it's only used here.
Make sure we don't end up with shellPath beeing non-zero, but shellName
beeing zero in the error case - back out cleanly from the error.
When executing a command for macro assignment in Cmd_Exec() stuff the
path of the shell into argv[0], not the name. This makes no difference
from the functionality point of view, but allows the regression tests to
determine whether make executes the correct shell.


146160 12-May-2005 jmallett

Include <err.h>. On my system CVS Make(1) has an implicit declaration of
warnc(3) without it.


146158 12-May-2005 harti

Still too early to bump WARNS - there are still warnings on 64bit
architectures.


146157 12-May-2005 harti

Make sure machine is initialize before use. Also make two pointers const
to get rid of the last two const warnings.


146156 12-May-2005 harti

Get rid of the warning about vfork() clobbering variables.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.246)


146155 12-May-2005 harti

Do mktemp() by hand to get rid of the mktemp() warning and the
possible associated security hole.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.245)


146154 12-May-2005 harti

Use a variable initialized to a string instead of the string directly
to get rid of a const warning.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.244)


146153 12-May-2005 harti

Move code in CondToken() and get rid of a goto.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.243)


146152 12-May-2005 harti

Remove a useless else and un-indent the following code.


146150 12-May-2005 harti

Revert the previous accidential commit.


146149 12-May-2005 harti

Cleanup SuffFindArchDeps() to get rid of two const-warnings.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.240)


146147 12-May-2005 harti

The first element of the vector built by brk_string() is never
used so there is no need to stuff the value of .MAKE into it,
which btw isn't set for quite a while already.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.239)


146146 12-May-2005 harti

Cleanup. Move initialisation of file and program global variables
to top of main() and sort them. Make chdir_verify_path() static - it
is used only here.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.238)


146145 12-May-2005 harti

Replace a lot of Var_Set(..., VAR_GLOBAL) by Var_SetGlobal().

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.237)


146144 12-May-2005 harti

Cleanup main(). Move catching SIGCHLD into job.c. Move unsetenv("ENV")
into job.c. Move retrieving of environment nearer to the place where it
is actually used and invert the preprocessor conditionals to use
positive logic.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.236)


146143 12-May-2005 harti

Reshuffle functions to get rid of prototypes.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.235)


146142 12-May-2005 harti

Compat_RunCommand is used only in job.c so make it static there.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.234)


146141 12-May-2005 harti

Move variable printing from main.c to var.c

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.233)


146140 12-May-2005 harti

Fix the fix for bin/72510 applied in job.c:1.70. Actually there have
been two maxJobs variables: one static in job.c and one global used in
main.c and parse.c. Makeing one global out of these was the wrong way
to fix the problem. Instead rename the global one to jobLimit and keep
maxJobs static in job.c.

Suggested by: rwatson
PR: bin/72510


146134 12-May-2005 harti

Move some global variables to the correct files.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.232)


146133 12-May-2005 harti

Untwist the convoluted if() expressions in JobFinish(). They
could benefit from even more untwisting.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.23[01])


146132 12-May-2005 harti

Move some comments around to where they belong and remove some unneccessary
gcc magic.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.229)


146131 12-May-2005 harti

Convert Compat_RunCommand() to use ProcWait(). This also gives Cmd_Exec()
the potential to handle interrupts which it doesn't currently.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.228)


146130 12-May-2005 harti

Make a function ProcWait() that waits for the given process.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.227)


146129 12-May-2005 harti

Overhaul the fork(), exec() code. Put all the common handling that
takes place in the child process in a function ProcExec(). Make sure,
that the child does not call malloc() or other potential dangerous
functions (there are still calls to Punt() in the error case that
should go away). Allocate the argv string via malloc to overcome
the non-constness bug of the execvp prototype. Change the handling of
shell meta-characters and move the builtin list near the list of shell
builtins. Both of these lists should actuall be configurable by the .SHELL
target since they depend on the shell used.

Patch: 7.21[2-9], 7.22[0-46]
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146066 10-May-2005 harti

Move the definitions of the OP_* constants from make.h into GNode.h
where they actually belong to. Move the definitions of the strings
for special macros like "$*" from make.h to parse.h - they're used
only in the parser.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.211)


146064 10-May-2005 harti

Path_Expand() expects its first argument to be writeable so put the
default system directory into a writeable character array before passing
it to Path_Expand().

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.210)


146062 10-May-2005 harti

Move declarations of variables belonging to the variable module
from globals.h into var.h.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (7.209)


146061 10-May-2005 harti

Style: remove spaces before tabs.

Patch: 7.207
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146060 10-May-2005 harti

Move the remaining two prototypes from nonints.h to make.h and
remove nonints.h.

Patch: 7.204
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146059 10-May-2005 harti

Make shellPath and shellName static - they're used in job.c only.
Move definition of parsing error levels from make.h into parse.h.

Patches: 7.202,7.203
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146058 10-May-2005 harti

Make the three versions of fork() more uniform.

Patch: 7.201 (idea taken, but done differently)
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146057 10-May-2005 harti

Move the defines for TMPPAT and KQUEUE from the public job.h into job.c
since they are used only there.

Patch: 7.200
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146056 10-May-2005 harti

Merge compat.c into job.c. There is a lot in common between these
files and we are going to factor this out.

Patch: 7.199 (slightly changed)
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146054 10-May-2005 harti

Move Cmd_Exec() from main.c to job.c and fix its prototype. This
results in a warning that will go away soon.

Patch: 7.198
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146048 10-May-2005 harti

Var_SubstOnly() is only used to subsitute a variable from the global
context (and only in one place to substitute the .for variable). Therefor
there is no need to pass the context as a parameter.

Patch: 7.197
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146047 10-May-2005 harti

Move the declaration of VAR_CMD and VAR_GLOBAL from globals.h to var.h

Patch: 7.196
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146046 10-May-2005 harti

Clean up comments. No code changes.

Patch: 7.195
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146045 10-May-2005 harti

Merge var_modify.c into var.c and move types and function declarations
that are now used only in var.c from var.h to var.c

Patches: 7.193,7.194
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146039 10-May-2005 harti

Move some debugging code from targ.c to var.c where it actually belongs.

Patch: 7.192
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146038 10-May-2005 harti

Make make a little bit more POSIXish with regard to option parsing:
take everything after -- as either a macro assignment or a target.
Note that make still reorders arguments before --: anything starting
with a dash is considered an option, anything which contains an equal
sign is considered a macro assignment and everything else a target.
This still is not POSIX with regard to the options, but it will probably
not change because it has been make's behaviour for ages.
Add a new function Var_Match() that correctly skips a macro call by just
doing the same as Var_Subst() but without producing output. This will help
making the parser more robust.

Patches: 7.190,7.191
Submitted by: Max Okumoto <okumoto@ucsd.edu>


146027 09-May-2005 harti

Split Var_Subst() into two functions: Var_SubstOnly() which substitutes
only one variable and Var_Subst() which substitutes all. Split out the
test whether a variable should not be expanded into match_var().
Make access to the input string consistently using str[]. Remove two
unused functions: Var_GetTail() and Var_GetHead().

Patches: 7.184-7.189
Submitted by: Max Okumoto <okumoto@ucsd.edu>


145971 06-May-2005 harti

Introduce a new pseudo-target .EXPORTVAR which allows to put a
make macro into the environment of programs executed by make. This
has approximately the same function as gmake's export directive.
The form of a pseudo target was deliberately choosen to minimize work
for POSIX compatibility (Makefiles are not allowed to use any targets
starting with a dot and consisting only of uppercase letters except those
specified in the standard when they want POSIX compatible behaviour, so
such a Makefile can never contain .EXPORTVAR.)
Change the handling of macros coming from the environment: instead
of asking the environment for each variable we could not find otherwise
put all the environment variables in a special variable environment just
at start up.

This has been tested on the ports cluster by kris.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


145683 29-Apr-2005 harti

Rename the directive_hash.[ch] files to hash_tables.[ch] now
that there are more than one hash table in them. There is no
history to preserve here, so go without a repo-copy.

Asked for by: Max Okumoto <okumoto@ucsd.edu>


145679 29-Apr-2005 harti

Implement a pseudo-target .WARN that allows toggeling the warning flags
for the current make. This does not override flags specified on the
command line and these settings are not passed to sub-makes.


145627 28-Apr-2005 harti

Introduce a flag to enable extended warnings (-x) and make them off
by default. This should fix the problem of getting lots of errors
when building with an up-to-date make and old *.mk files.


145616 28-Apr-2005 harti

Use a minimal perfect hash for the special sources/targets too. Add
the corresponding magic to create the hash function to the Makefile.


145614 28-Apr-2005 harti

Fix the $$FreeBSD$$ that should be written verbatim to directive_hash.c
so that it doesn't get replaced with the Makefile's revision.


145612 28-Apr-2005 harti

Move the hash function for directives into its own file and add
a Makefile target to re-created this file. Note, that there is no
explicite dependency to automatically re-create the file, because this
is needed only when the directive table changes and it requires the
(yet to come) devel/mph port.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (first version)


145007 13-Apr-2005 harti

Split VarFind() into a series of functions tailored for the different sets
of flags originally passed to VarFind(). This eliminates the code by
removing a bunch of tests.

Patch: 7.173

Submitted by: Max Okumoto <okumoto@ucsd.edu>


144897 11-Apr-2005 harti

Parse_Init() is gone so remove comments that mention it.


144896 11-Apr-2005 harti

Remove an unneccesary forward declaration for MainParseArgs().
getopt() may be called several times - make sure to set optreset
to reset it. Cleanup handling of non-option arguments.
Remove some misleading comments.

Patch: 7.171

Submitted by: Max Okumoto <okumoto@ucsd.edu>


144895 11-Apr-2005 harti

Remove the call to Parse_Init() - there is no need to initialize
a static variable to NULL. Forgot this in the previous commit to
parse.[ch].


144894 11-Apr-2005 harti

Rework the directive parsing code. Instead of using a lot of strcmp()s
on every line that starts with a dot use a minimal perfect hash
function and a single strcmp() on the first word after the dot
to find out whether it is really a directive call and, if yes, which
one. Then directly dispatch to a handler function for that directive
(or fall through to the dependency handling code). This makes the
directive parse a little bit more strict about the syntax: the directive
word must be followed by a character that is not alphanumerical and not
an underline (making .undefFOO illegal); .endif and .else can only be
followed by comments.


144787 08-Apr-2005 harti

Move the code for parsing .for and .if statements to the place where the
other directives are handled.


144745 07-Apr-2005 harti

When Parse_Error is called after the top-level Makefile is closed we
have no CURFILE anymore so we cannot print a file name or line number.

When ParseSkipLine() returns NULL (it does this when it has detected an
EOF in an .if block) try to pop the input stack and process the next line


144742 07-Apr-2005 harti

Handle popping of the input stack in ParseReadLine() instead of
Parse_File(). Remove a comment and a piece of code comming from
ancient times when the if-directive read like #if and not .if.
Correctly analyze the first character of a line.


144741 07-Apr-2005 harti

Mostly stylistic changes: remove the noPLen field from the Shell
structure - it is just the strlen() of noPrint. Inline JobCondPassSig()
in the only function JobPassSig() using it. Fix the argument types
of JobPrintCommand(). Better parsing for the .SHELL target keywords.


144665 05-Apr-2005 harti

There is not much sense in having an else after Punt() and _exit() which
never return. Also use pid_t for variables holding PIDs.


144658 05-Apr-2005 harti

Put parantheses into 'if (foo && bar & flag)'. While they are not strictly
needed, they are useful for the human reader.


144657 05-Apr-2005 harti

Remove lots if irritating parantheses and fix two comments.

Checked by: md5


144656 05-Apr-2005 harti

Remove the definition for STATIC and just use static.


144655 05-Apr-2005 harti

Remove unneccessary local prototypes.


144654 05-Apr-2005 harti

The static tfile is used only in one single function so move it into that
function.


144653 05-Apr-2005 harti

The tfile field of struct Job isn't used anymore since revision 1.22 so
remove it now.


144494 01-Apr-2005 harti

Use a type-safe intrusive list to put jobs on the jobs or stoppedJobs list
instead of the generic Lst.


144493 01-Apr-2005 harti

Remove a forward declaration that isn't needed anymore.


144483 01-Apr-2005 harti

Both struct Job and struct Shell are only used inside job.c so there is
no need to have them in a header file that is included by other modules.
Move them both into the c-file.


144482 01-Apr-2005 harti

Style: fix indentation.


144479 01-Apr-2005 harti

Style: fix indentation.


144478 01-Apr-2005 harti

Style: indentation.


144475 01-Apr-2005 harti

Style: Indentation.


144473 01-Apr-2005 harti

Style: fix indentation.


144470 01-Apr-2005 harti

Style: fix indentation.


144469 01-Apr-2005 harti

Style: fix indentation.


144467 01-Apr-2005 harti

Style: fix indentation.


144388 31-Mar-2005 harti

Document the new -A flag for ignoring archive errors.


144387 31-Mar-2005 harti

Almost complete rewrite of the archive code (except for the Makefile parsing
part). Archive handling was broken at least since the move from BSD ar/ranlib
to GNU binutils because of the different archive format. This rewrite fixes
this by making make to carry around the defines for all formats (it supports)
so it can support all of them independent of the actually used one. The
supported formats are: traditional BSD (this seems to come from V7 at least,
short names only and __.SYMDEF), BSD4.4 (long names with #1/ and __.SYMDEF)
and SysV (extra name table and //). The only format not supported are broken
traditional archives where the member names are truncated to 15 characters.

Errors in the archive are not ignored anymore, but cause make to stop with
an error message. The command line option -A causes these errors to become
non-fatal. This is almost compatible with previous usage except for the
error message printed in any case.

Use a type-safe intrusive list for the archive cache.

Reviewed by: Max Okumoto <okumoto@ucsd.edu> (without new error handling)


144386 31-Mar-2005 harti

Move the MAX macro to a util.h so it becomes usable in other modules.

Suggested by: Max Okumoto <okumoto@ucsd.edu>


144341 30-Mar-2005 harti

Make the structure for handling the input stack local to the parse
module. The only module accessing it (the current line number) was the
condition module, so pass the current line number as a function argument.
Centralize the pushing of new input sources into one function
ParsePushInput() and rename the function handling the popping from ParseEOF()
to ParsePopInput(). Make the entire thing a little bit clearer, by holding
the current input source in the top element of the stack instead of
using extra variables for this. Use a type-safe intrusive list for the
input stack.


144340 30-Mar-2005 harti

Fix a bug introduced in a previous commit: ParseModifier() consumes
characters so it is not safe to move around code from
before it to after it. This should fix problems with building the
documentation.

Patch: 7.170

Submitted by: Max Okumoto <okumoto@ucsd.edu>


144029 23-Mar-2005 harti

Style: de-lispify by removing extra parantheses in conditional expressions.


144026 23-Mar-2005 harti

Style: make indentation 8 characters.


144020 23-Mar-2005 harti

Make paths an explicite datatype instead of using the generic Lst.
A Path is now a TAILQ of PathElements each of which just points to
a reference counted directory. Rename all functions dealing with Paths
from the Dir_ prefix to a Path_ prefix.


143979 22-Mar-2005 harti

Style: <space><tab> -> <tab>


143978 22-Mar-2005 harti

Rename struct Path to struct Dir and move it into the C-file. It
is not used outside.


143977 22-Mar-2005 harti

Remove debugging code that crept in in the last commit.


143976 22-Mar-2005 harti

Remove Lst_Find() and Lst_FindFrom() now that they aren't needed anymore.


143975 22-Mar-2005 harti

Remove the last two instances of Lst_Find() calls.


143970 22-Mar-2005 harti

Use VarParse() inside var.c instead of Var_Parse().

Patch: 7.163

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143969 22-Mar-2005 harti

Unify callers to Var_Parse() with regard to variable names.

Patch: 7.162

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143968 22-Mar-2005 harti

Make some callers of VarFind using the same code structure.

Patch: 7.161

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143967 22-Mar-2005 harti

De-lispify some if()-expressions by removing extra parantheses.

Patch: 7.160
Requested by: harti

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143966 22-Mar-2005 harti

Return a Buf object from VarGetPattern() instead of a char * and a size_t.
Store a Buf object in struct VarPattern instead of a char * and a length.

Patch: 7.158

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143965 22-Mar-2005 harti

Use the struct VarPattern's lhs field instead of using an extra variable
to store the left expression of a C modificator.

Patch: 7.157

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143964 22-Mar-2005 harti

Merge struct VarREPattern into struct VarPattern. This will help sorting
out common code.

Patch: 7.156

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143963 22-Mar-2005 harti

Sort prototypes.

Patch: 7.155

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143962 22-Mar-2005 harti

Fix indentation.

Patch: 7.154 (partly)

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143961 22-Mar-2005 harti

Delete an extra empty line.

Patch: 7.153

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143960 22-Mar-2005 harti

An automatic variable in a local scope is (conceptionally) destroyed with
the closing brace so it is unwise to keep a pointer to it. Make
the variable static to fix this.

Patch: 7.152

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143959 22-Mar-2005 harti

Simplify buffer access by using Buf_Data() and Buf_Peel() where
appropriate.

Patch: 7.147-7.151

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143957 22-Mar-2005 harti

Two new functions: Buf_Data() returns a reference to the data in
the buffer and Buf_AppendBuf() appends a copy of one buffer to another
buffer.

Patch: 7.146,7.147

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143955 22-Mar-2005 harti

Remove a temporary variable. Rename pattern to patt to be consistent.
Remove unreachable code for VAR_NOSUBST - it was never set.
Replace redundant code with calls to VarGetPattern().

Patch: 7.143-7.145

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143920 21-Mar-2005 harti

Remove unneeded temporary variables in modifier_S() and modifier_C().
Change the parsing of the C modifier flags so that specifying both
'1' and 'g' gives an error.

Patch: 7.141,7.142

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143919 21-Mar-2005 harti

Remove comment about Var_Parse assuming that the first character
is always a '$'. This is not always correct, for example for
conditionals: .if defined(foobar).

Clean up some comments.

Move common code out of if-statements.

Patch: 7.140

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143918 21-Mar-2005 harti

Split out SysV variable substitution into its own function.

Patch: 7.139

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143917 21-Mar-2005 harti

Rename freePtr to freeResult to make it more obvious about what
pointer we're talking.

Patch: 7.138

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143916 21-Mar-2005 harti

Move some code from ParseModifier() into the calling function to
simplify things. Correct a number comments.

Patch: 7.137

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143915 21-Mar-2005 harti

Cleanup the VAR_JUNK handling.

Patch: 7.136

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143914 21-Mar-2005 harti

Don't pass 'consumed' through all the parsing routines where it can be computed
by the caller. Don't pass 'endc' - it can be computed from 'startc'.
Remove unneccessary temporary variables. Remove constant if-expressions
and remove code before call Fatal() - there is no point to cleanup before
aborting.

Patch: 7.134,7.135

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143913 21-Mar-2005 harti

Change one occurence of 'delim' to the correct type. Delete another
occurence which actually holds always the same constant value.
Shorten the name pattern to patt.

Patch: 7.133

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143911 21-Mar-2005 harti

Replace calls to Lst_Find with either appropriate LST_FOREACH macros
plus predicate inlining or a special purpose function with takes
and returns the correct types.


143910 21-Mar-2005 harti

Reduce number of parameters passed between the parsing routines
by putting them into struct VarParser or computing them (consumed).
Change the loop termination condition in VarParseLong from endc to \0.

Patch: 7.128-7.132

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143904 21-Mar-2005 harti

Reduce the number of explicit parameters passed to VarParse()
by passing them through struct VarParser.

Patch: 7.127

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143816 18-Mar-2005 harti

Cleanup handling of colons in variable substitutions.

Patch: 7.126

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143814 18-Mar-2005 harti

Unfold parsing of single letter modifiers from multi-letter ones.

Patch: 7.125

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143813 18-Mar-2005 harti

Style: fix indentation and <space><tab>.

Patch: 7.124

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143812 18-Mar-2005 harti

Split out the 'S' modifier into its own function.

Patch: 7.122,7.123

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143811 18-Mar-2005 harti

Convert Var_Parse to a wrapper function.
Reduce the number of arguments passed between these functions by
creating a special-purpose struct.

Patch: 7.120,7.121

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143810 18-Mar-2005 harti

Replace Lst_Find calls with LST_FOREACH loops. This helps in
constification und simplifies the code because the one-liner
predicates can be inlined into the code.


143808 18-Mar-2005 harti

Replace a bogus use of Lst_Find with explicite LST_FOREACH calls
and remove the unneeded second argument to ReadMakefile.


143807 18-Mar-2005 harti

Fix a bug in matching suffixes. Under certain circumstances the code
would access memory before the beginning of the string to match (the
suffix match starts at the end of both the string and the suffix and
proceedes to the begin until either the start of the suffix is hit
or the character does not match). This could lead to a memcpy copying
into random memory. Fix this by checking the length of the string to
match too and replacing the Lst_Find calls with LST_FOREACH loops
(last part by me).

Submitted by: Matt Dillon <dillon@apollo.backplane.com> (in principle)


143704 16-Mar-2005 harti

Now that there are no users of Lst_ForEach and Lst_ForEachFrom are left
delete these two macros and all the associated stuff.


143703 16-Mar-2005 harti

Replace Lst_ForEach by LST_FOREACH.


143694 16-Mar-2005 harti

Replace another bunch of Lst_ForEachs by LST_FOREACHs and simplify code.


143685 16-Mar-2005 harti

Fix a comment.


143684 16-Mar-2005 harti

Get rid of another bunch of Lst_ForEach in favour of LST_FOREACH and
simplify code accordingly.


143657 15-Mar-2005 harti

Ups. Revert the last commits. These have been committed by accident.


143656 15-Mar-2005 harti

modifier_M: instead of going through the string twice to compute the
size of the buffer we need, just allocate the possible maximum.

Patch: 7.117

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143653 15-Mar-2005 harti

Style: Move a variable from a local scope up to the begin of the function.
Rename result variable so common code becomes more visible.
Rename freePtr to freeResult to make clear what pointer must be freed.

Patch: 7.116, 7.116a

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143650 15-Mar-2005 harti

Get rid of a number of Lst_ForEach calls in favour of LST_FOREACH
and simplify the printing functions.


143649 15-Mar-2005 harti

VarParseLong: move the detection of the modifier separator ':' into
the loop. Add a comment why the 'consumed' variable is updated.
Rename lengthPtr to consumed.

Patch: 7.115

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143647 15-Mar-2005 harti

Yet another version of passing the last line to ParseFinishLine().
It turns out that some ports use the obscure feature of spreading
a dependency block across multiple include files. While this seems
bad style, allow it for now and call said function only at end of
all input to process the really last line of everything.


143600 14-Mar-2005 harti

Get rid of another Lst_ForEach in favour of LST_FOREACH. Get rid
of the now unused struct LstSrc and collapes two functions into one.


143599 14-Mar-2005 harti

ParseModifier(): rename rw_str to value and reindent cleanup section.
ParseRestModifier() and ParseRestEnd(): move advancement of ptr to remove
a confusing calculation.
VarParseLong(): cleanup calculation of consumed.

Patch: 7.114

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143567 14-Mar-2005 harti

Move the creation of a Src structure into its own function.


143566 14-Mar-2005 harti

Split off two function from VarParseLong to handle modifiers and the
actual variable lookup. Consistently rename lengthPtr to consumed.
Update a number of comments to match the code.

Patch: 7.111-113

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143556 14-Mar-2005 harti

Convert a couple of other uses of Lst_ForEach to LST_FOREACH and
simplify code.


143414 11-Mar-2005 harti

Simplify the print routines by using LST_FOREACH instead of Lst_ForEach
and inlining the small printing utility functions.
Create a function that can be used to produce printable representations
of flag words.


143412 11-Mar-2005 harti

Remove leading underscores from the pathname defines. All identifiers
with leading underscore followed by an uppercase letter are in the
implementation namespace.


143411 11-Mar-2005 harti

Remove the leading underscore from structure tags. All identifiers
with a leading underscore are in the implementation namespace.


143407 11-Mar-2005 harti

Style: Fix indentation.


143405 11-Mar-2005 harti

Call ParseFinishLine() also for the last line in a file. This
patch differs from the previous one in that it calls the function
only when a real file hits EOF. The bodies of .for loops are also
handled as files, but for these we don't want to end a dependency block
on the 'EOF' as in:

foo:
do-this
.for ...
do-something
.endfor
do-more


143401 11-Mar-2005 harti

Back out the last commit. It turns out that this breaks more than
it fixes. This should fix the buildworld breakage.


143377 10-Mar-2005 harti

Constify Var_Dump and simplify it by inlining VarPrintVar.


143375 10-Mar-2005 harti

Call ParseFinishLine() for the last line of a file too.


143372 10-Mar-2005 harti

Reorganize Suff_EndTransform to be called only for nodes for
which it is needed (transforms).


143353 10-Mar-2005 harti

Style: fix function style before working on it (mainly intendation).


143328 09-Mar-2005 harti

Implement a new macro LST_NEXT which is like Lst_Succ but doesn't check
for its argument to be non-NULL.


143327 09-Mar-2005 harti

Split SuffExpandChildren into three functions: one that skips
variables and expands archive specifications, one that expands
wild cards and a driver that loops over the children list and
expands each child if necessary replacing it with it's expansions.


143312 09-Mar-2005 harti

Var_Subst() cannot return NULL so there is no reason to check
for it.


143297 08-Mar-2005 harti

Style: fix indentation of SuffExpandChildren before working on it.


143292 08-Mar-2005 harti

Use Buf_Peel to get rid of a local variable.


143291 08-Mar-2005 harti

Use the Buf_Peel function to get to the string contained into a
buffer without using an extra local variable.


143290 08-Mar-2005 harti

Remove useless local prototypes.


143289 08-Mar-2005 harti

Style: fix indentation.


143288 08-Mar-2005 harti

Use the new Buf_Peel function to simplify things.
Remove an unused struct definition.


143287 08-Mar-2005 harti

Create a new function Buf_Peel that returns the string from inside
a Buffer and frees the Buffer.


143278 08-Mar-2005 harti

Add a debugging function that prints a message and appends the
current strerror.


143277 08-Mar-2005 harti

Mark functions that don't return as dead.


143276 08-Mar-2005 harti

Finish constification of Var_Parse() and Var_Subst().

Patch: 0.18, 0.8, 7.110

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143255 07-Mar-2005 harti

Constify the callers of brk_string in this file.

Patch: 7.108

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143254 07-Mar-2005 harti

Style: fix indendation of VarModify().

Patch: 7.107

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143253 07-Mar-2005 harti

Constify the input argument to brk_string.

Patch: 7.106

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143252 07-Mar-2005 harti

Factor out the 'S' modifier into its own function. Move a variable
that is now used for both the 'M'/'N' branch and the 'S' branch of
the switch statement into a common scope.

Patch: 7.102-105
Submitted by: Max Okumoto <okumoto@ucsd.edu>


143240 07-Mar-2005 harti

Move the 'M' and 'N' modifiers into their own function.

Patch: 7.101

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143105 03-Mar-2005 harti

Style: remove unneeded parantheses in conditionals.


143104 03-Mar-2005 harti

Constify the code paths for the 'M' and 'N' modifiers.

Patch: 7.100

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143102 03-Mar-2005 harti

Fix parsing of archives: in System V archive format the member names
is terminated with a slash. Although we are not System V, ar has
been configured to put that slash in. This format allows filenames
with trailing spaces.


143101 03-Mar-2005 harti

Fix parsing of archive specifications on the target side of
dependency lines. It seems that nobody is actually is using
the archive-feature of make.


143100 03-Mar-2005 harti

Update the description comment of the function to reflect the
previous change.


143097 03-Mar-2005 harti

Transform VarParseLong() so that the lifetime and the constness of
variables gets clearer. Transform if() conditions to make the flow
clearer.

Patch: 7.93-99

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143040 02-Mar-2005 harti

Move the check for the error case (variable ends without a closing
paranthesis or brace) into the loop and don't leak the buffer in this
case. Remove the check for Var_Parse returning NULL - it can't.

Patch: 7.92

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143037 02-Mar-2005 harti

Fix indentation on a block of code.

Patch: 7.91

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143036 02-Mar-2005 harti

Push the length computation down into VarParseShort().
Return always malloc()-ed strings from VarParseShort() to get
rid of warnings when returning string constants from a non-const char *
function.

Patch: 7.90

Submitted by: Max Okumoto <okumoto@ucsd.edu>


143027 02-Mar-2005 harti

Convert a function call to Lst_ForEach with a macro call to LST_FOREACH.


142993 02-Mar-2005 harti

Use the LST_FOREACH macro instead of the Lst_ForEach function. This
saves function calls and reduces void casting.


142937 01-Mar-2005 harti

Make sure the length variable is initialized to 0 before passing
it to Var_Parse().

Patch: 7.85

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142910 01-Mar-2005 harti

Split out ParseModifiers from VarParseLong.

Patch: 7.84
Submitted by: Max Okumoto <okumoto@ucsd.edu>


142908 01-Mar-2005 harti

VarParseLong: Create new else block for haveModifier. Move the call
to VarExpand down into the branches of the if as well as cleanup code.
Eliminate code that is now obviously dead.

Patch: 7.83

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142881 01-Mar-2005 harti

Reverse a condition so that the else clause can be changed
to a fallthrough.

Patch: 7.82

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142809 28-Feb-2005 harti

VarParseLong: Move the initialisation of dynamic up which saves
an else clause. Move the assignment to the lengthPtr down to
just before the return statements.

Patch: 7.81

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142807 28-Feb-2005 harti

Buf_GetAll wants a pointer as its second argument, not a boolean -
replace FALSE by NULL.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142796 28-Feb-2005 harti

Don't modify the input string in VarParseLong(). It is not
necessary to NUL-terminated it, because we know the lengths
from the pointers.

Patch: 7.80

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142557 26-Feb-2005 harti

Major clean up and split the Var_Parse monster function into three
functions: one for the single letter variables, one for the others
and one that does the recursive expansion.

Patches: 7.68-7.79

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142457 25-Feb-2005 harti

Change the return value of Var_Subst to return a Buffer instead
of a char *.

Patch: 7.49

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142382 24-Feb-2005 harti

Var_Parse: Separate different error states by introducing an else block
after a return. Move assignments to {freePtr, dynamic, start} closer to the
return statements to clarify which variables are actually used for
communication between the losely coupled blocks of the code. Clear up
an if-expression to make common structures of the conditions clearer.
Use strchr instead of switch statements to check for a character beeing
a member of a set.

Patches: 7-62.2, 7-62.3, 7-64, 7-65.1, 7-65.2
Submitted by: Max Okumoto <okumoto@ucsd.edu>


142377 24-Feb-2005 harti

Push assignments to just before the returns from the function to
get it clearer what variables are actually needed.

Patches: 7.62.2, 7.62.3
Submitted by: Max Okumoto <okumoto@ucsd.edu>


142376 24-Feb-2005 harti

Fix wording of a comment.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142375 24-Feb-2005 harti

Replace the calls to Lst_ForEach with the new LST_FOREACH macro and
fix the prototype for Compat_RunCommand to take the actual argument
types instead of void *.


142299 23-Feb-2005 harti

Use the LST_FOREACH macro instead of the Lst_ForEach function
and so get rid of the ForExec helper function by inlining it
into For_Run.


142298 23-Feb-2005 harti

Style: fix indent, use tabs instead of space+tab for aligning things.
Add a couple of comments.


142297 23-Feb-2005 harti

Fix the indendation of some multi-line comments.

Noted by: Max Okumoto <okumoto@ucsd.edu>


142211 22-Feb-2005 harti

Fix the prototypes by addings some constness. This should have been
committed together with the commit to dir.c:1.48.


142209 22-Feb-2005 harti

Use the new LST_FOREACH macro throughout the file and replace calls to
Lst_ForEach and Lst_Find.


142208 22-Feb-2005 harti

Invent the LST_FOREACH macro for looping through a list. In contrast
to the Lst_ForEach function this macro reduces the number of function
calls per invocation by N + 1 (where N is the number of list elements)
and increases code locality thereby increasing readability and
(maybe) performance.


142173 21-Feb-2005 harti

Style: fix indendation to be 8 and use tabulators. Fix lines longer than
80 characters and slightly reorder functions to get rid of static
prototypes.


142166 21-Feb-2005 harti

Forgot to set *freePtr to FALSE in another place.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142165 21-Feb-2005 harti

Fix a bug in handling archive members: when a member was not found
when looking into an already hashed archive, the code tried to use
the name shortened to the maximum length allowed for the archive.
Unfortunately it passed a buffer of junk to the hashing routine when
the name actually wasn't too long. Theoretically this could lead to
a false positive.


142044 18-Feb-2005 harti

Push the assignments of some variables down into the sub-blocks where
it is actually needed. This makes clear in which subblocks the variables
are not needed and which can easier be split out.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142038 18-Feb-2005 harti

Push down variables into local scope in Var_Parse to make their
liveness clear for splitting up this monster function.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


142014 17-Feb-2005 harti

Whitespace cleanup: substitute mixed tabs and spaces by canonical
whitespace and line up some variable definitions.


142013 17-Feb-2005 harti

Move error case to begin of if-else chain. Do not needless initialize
startc, but only at the place where the initialisation is needed. Remove
a needless else.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (partly)


142008 17-Feb-2005 harti

Fix two typos in comments.

Submitted by: ru & Max Okumoto <okumoto@ucsd.edu>


142007 17-Feb-2005 harti

Sort out the error case that a single '$' was passed a little bit
earlier instead of mixing its handling with other cases.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141974 16-Feb-2005 harti

Mostly stylistic issues: move a variable into local scope, make
condition positive and fix long lines.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141969 16-Feb-2005 harti

Better version of the patch in 1.117: bring a variable into local scope
to prepare for function splitting and slightly reorganise the code
in anticipation of Var_Subst returning a Buffer.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (with slight changes)


141846 13-Feb-2005 ru

Expand *n't contractions.


141799 13-Feb-2005 harti

Back out the previous commit. There is an obvious bug in it.

Pointy hat to: harti


141697 11-Feb-2005 harti

Stylistic fixes: push variable into a local context (this part is going
to be split out into a function soon). Also there is no need to write
back the colon that we have NUL-ed - the string is going to be freed
anyway.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141686 11-Feb-2005 harti

Convert several instances of negative logic to positive logic.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141661 10-Feb-2005 harti

Buffers are already NUL-terminated so there is no need to explicitely add
a NULL.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141659 10-Feb-2005 harti

Mostly stylistic nits in preparation for splitting up Var_Parse:
use a more consistent style with regard to *str and str[0];
simplify code by introducing a temporary variable;
shift a break around and add braces where appropriate.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141654 10-Feb-2005 harti

Let the buffer just use the default size by specifying 0 as the size
instead of specifying the default size explicitely.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141653 10-Feb-2005 harti

Mark the modification of the input string (which should really be const)
with a comment.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141652 10-Feb-2005 harti

Style nits:
Move some assignments nearer to where they actually used. Convert a loop
from a for() to a while() to make it clearer and add braces to the long
body of it. Split assignment from variable declaration.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141650 10-Feb-2005 harti

Describe a pre-condition of Var_Parse().

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141649 10-Feb-2005 harti

Remove a comment that's not actual anymore.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141648 10-Feb-2005 harti

Fix spacing by converting mixes of space and tab to tab. Also add a number
of empty lines in appropriate places.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141647 10-Feb-2005 harti

Initialise the status variable. W_SETTERMSIG uses its value.

Submitted by: stefanf


141645 10-Feb-2005 harti

Lst_Append returns void, so the other case of the ? statement
should also be void.

Submitted by: stefanf


141583 09-Feb-2005 harti

Use defines for character constants for open and closing braces and
parantheses. This helps editors to find its way through the horrible
mess of Var_Parse. Rewrite a for() loop into a while() to make it clearer.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141573 09-Feb-2005 harti

While working on constification temporarily disable -Werror. Things are too
twisted.


141572 09-Feb-2005 harti

Untangle VarFind and, while rewriting most of the function, fix the
intendation. (A large part of the function was already at intendation 8).


141564 09-Feb-2005 harti

Introduce VarCreate and VarDestroy functions and used them where
appropriate.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141461 07-Feb-2005 harti

Remove an unneeded check.


141460 07-Feb-2005 harti

Introduce a typedef for variable value modifation functions and use it
where appropriate.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141459 07-Feb-2005 harti

Make the intention of a loop clearer.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141454 07-Feb-2005 harti

Introduce Buf_StripNewLines() and use it where appropriate.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141437 07-Feb-2005 harti

Invent a Buf_AppendRange function that appends a non-NUL-terminated string
given by a pointer to the start of the string and a pointer one behind
the end.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141436 07-Feb-2005 harti

Invent a Buf_Append function to append a NUL-terminated string
and use it thoughout the code.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141291 04-Feb-2005 harti

Where the returned line length from Buf_GetAll is not used just pass
a NULL to the function. Delete the now unused local variables.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141290 04-Feb-2005 harti

Rewrite of the buf code:
- convert Buf_AddByte from a macro to a function
- move #define's into the header file
- remove unused field in struct Buffer
- remove size fields - they can be easily computed
- inline Buf_OvAddByte

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141275 04-Feb-2005 harti

None of the users of Buf_Discard used it to get rid of only a part of
the buffer. So replace Buf_Discard by Buf_Clear which just gets rid
of the entire contents.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141273 04-Feb-2005 harti

Inline the ADDWORD() macro in the two places where it is used. It just
obfuscates the code.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141272 04-Feb-2005 harti

Use _exit() instead of exit() when the exec() after a vfork() fails.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141271 04-Feb-2005 harti

Move PrintAddr() from util.c into suff.c - the only file where it is
actuall used, and make it static.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141270 04-Feb-2005 harti

General whitespace cleanup: remove mixes of tabs and spaces, remove
space after function names, remove spaces on emtpy lines.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141269 04-Feb-2005 harti

Minor cleanup: make brk_string to return argc only if the pointer to it
was non-NULL. This let's us eliminated an otherwise unused variable.

shellneeded can never return -1 so there is no need to check for it and
hence no need for a variable to hold the returned value.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (partly)


141268 04-Feb-2005 harti

Further constification. Use a temporary hack (copying the input string)
until Var_Subst is fixed.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141260 04-Feb-2005 harti

Use an extra variable to assign to instead of missusing an input
parameter. This will help in constification.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141259 04-Feb-2005 harti

Replace space, tab mixes by tabs.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141258 04-Feb-2005 harti

Use tabs to move to the comments instead of wild mixes of tabs and spaces.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141255 04-Feb-2005 harti

Style: line up with tabulators.


141254 04-Feb-2005 harti

Use a typedef for the conditional handler function so that declaring
pointers to these functions is easier.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141253 04-Feb-2005 harti

Style: remove a space between a function name and the opening
paranthesis.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141252 04-Feb-2005 harti

Some more easy constification.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141192 03-Feb-2005 harti

Constify an argument to a function.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141191 03-Feb-2005 harti

Get rid of a number of unneccessary memory allocations.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141139 02-Feb-2005 harti

Make enomem static - it's referenced only in util.c.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141138 02-Feb-2005 harti

Remove a couple of unused buffer functions.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141133 02-Feb-2005 harti

Convert several typedefs from beeing pointers to structs to be the structs
itself. This will ease constification (think of what 'const Ptr foo'
means if Ptr is a pointer to a struct).

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141115 01-Feb-2005 harti

Move all the remaining list functions into one C-file and remove
double documentation comments. Remove the 3rd clause (from 4) of the
BSD license because these files have only the UCB copyright.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


141107 01-Feb-2005 harti

Remove debugging stuff that crept in in the previous commit.


141104 01-Feb-2005 harti

Clean up include files and file including. Split nonints.h into pieces
that get included just where they are needed. All headers include the
headers that they need to compile (just with an empty .c file). Sort
includes alphabetically where apropriate and fix some duplicate commenting
for struct Job, struct GNode and struct Shell by removing one version and
inlining the comments into the structure declaration (the comments have been
somewhat outdated).

This patch does not contain functional changes (checked with md5).

Submitted by: Max Okumoto <okumoto@ucsd.edu>


140870 26-Jan-2005 harti

Fix quoting of the MAKEFLAGS environment variable by only quoting spaces
and tabs. This is still not correct for command line variable values
ending in a backslash because this would require a larger effort.
Document this limitation in the BUGS section of the man page. The
quoting is mostly compatible with that of gmake and smake.

Tested by: Max Okumoto and Joerg Sonnenberger from DragonFly BSD
Reviewed by: ru (man page, partly)


140420 18-Jan-2005 ru

Sort sections.


140055 11-Jan-2005 ru

Scheduled mdoc(7) sweep.


139112 21-Dec-2004 ru

NOSHARED -> NO_SHARED


139064 20-Dec-2004 harti

Fix compilation for the USE_KQUEUE case.

Submitted by: Emil Mikulic <emikulic@dmr.ath.cx>


139062 20-Dec-2004 harti

maxJobs is declared extern in job.h so it cannot be static in job.c.

PR: bin/75210
Submitted by: Andreas Jochens; Robert Millan <rmh@debian.org>


138972 17-Dec-2004 harti

Remove all the cleanup functions. There is no reason to free memory
just before exiting (especially given the number of memory leaks) -
it just costs time.


138920 16-Dec-2004 ru

Fix a long-standing bug when make(1) is passed the -V and
-f options in MAKEFLAGS environment variable, and some of
these options are also specified on the command line.

Thanks to: marcel
Reviewed by: harti


138916 16-Dec-2004 harti

Instead of dynamically allocating list heads allocated them statically
now that their size is only two pointers. This eliminates a lot of calls
to Lst_Init and from there to malloc together with many calls to
Lst_Destroy (in places where the list is obviously empty). This also
reduces the chance to leave a list uninitilized so we can remove more
NULL pointer checks and probably eliminates a couple of memory leaks.


138656 10-Dec-2004 harti

Remove a list that was just used to free all variables just before exiting.


138655 10-Dec-2004 harti

Remove a list that used to hold all the GNodes just to be able
to free them just before exiting.


138654 10-Dec-2004 harti

Remove a useless list where just all command lines are stuffed onto, never
used and just freed at the end. The idea might have been to be able
to free all the strings, but what's the point to free just before exiting?


138629 09-Dec-2004 harti

Nobody actually checked the return codes from Lst_Append and Lst_Insert
so don't return anything.


138621 09-Dec-2004 harti

If a path element directory was never opened it is not on the list of
open directories so there is no need to remove it from there. This fixes
a core dump introduced by removing the run-time check from Lst_Remove.


138581 08-Dec-2004 harti

Now that circular lists are gone remove stuff for them. Simplify
somewhat so that we can remove a local variable.


138577 08-Dec-2004 harti

No caller checks the return code from Lst_Remove, so don't return one.
Simplify the algorithm now that circular lists are gone.


138567 08-Dec-2004 harti

Don't check the return code from Lst_Remove. There is no way
that the list's first element is not on the list.


138566 08-Dec-2004 harti

Remove return value from Lst_Concat. None of the callers ever checked
it. Remove stuff that was needed for circular lists.


138565 08-Dec-2004 harti

Don't free the second list in Lst_Concat for LST_CONCLINK; free it
in the caller instead.


138564 08-Dec-2004 harti

Get rid of the sequential access feature of the lists. This was used
only in a couple of places and all of them except for one were easily
converted to use Lst_First/Lst_Succ. The one place is compatibility
mode in job.c where the it was used to advance to the next command on
each invocation of JobStart. For this case add a pointer to the node to
hold the currently executed command.


138561 08-Dec-2004 harti

Constify the arguments to the list compare function. This temporarily
requires to make a copy of the filename in ReadMakefile and to duplicate
two small functions in suff.c. This hopefully will go away when everything
is constified.

Submitted by: Max Okumoto <okumoto@ucsd.edu> (partly)


138548 08-Dec-2004 harti

Constify some calls of Buf_AddBytes.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


138547 08-Dec-2004 harti

Consify the arguments to str_concat. Remove the STR_DOFREE flag for that
purpose and explicitely free the input string in the one place that was
calling str_concat with that flag.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


138512 07-Dec-2004 harti

Typedefs of pointers to structs are evil. Make Lst and LstNode typedef of
the structs itself not of pointers to them. This will simplify constification.

Checked by: diff on the object files


138511 07-Dec-2004 harti

Constification of arguments passed to functions; no change on the
resulting executable.

Checked by: diff on original and new objects

Submitted by: Max Okumoto <okumoto@ucsd.edu>


138510 07-Dec-2004 harti

Make needs no circular lists so remove them from the list code.


138455 06-Dec-2004 harti

Some constification which doesn't require code rewrites.


138441 06-Dec-2004 harti

Style: fix indentation.


138436 06-Dec-2004 harti

Remove an unused macro.


138435 06-Dec-2004 harti

Constify arguments to Hash_FindEntry and Hash_CreateEntry.


138434 06-Dec-2004 harti

Remove extra empty lines.


138433 06-Dec-2004 harti

Style: fix indentation, prototypes for functions even in comment.


138347 03-Dec-2004 harti

Remove an extra space.

Submitted by: ru


138346 03-Dec-2004 harti

Fix breakage introduced on 64-bit platforms with my last commit. Need
to change to size_t in a couple of other places too.


138343 03-Dec-2004 harti

Plug a memory leak.


138342 03-Dec-2004 harti

Put macro arguments in paranthesis.

Submitted by: johan


138341 03-Dec-2004 harti

Make sizes to be of type size_t and correct function arguments that
should be Byte (as the numerous casts to Byte in the function calls show).


138337 03-Dec-2004 harti

Style: fix indentation, protect macro with do { } while (0).

Checked with: diff on object file.


138335 03-Dec-2004 harti

Describe the .SHELL target.

Reviewed by: ru


138334 03-Dec-2004 harti

Change the algorithm that matches the builtin shells from the name keyword
of the .SHELL target. Formerly it used to select the shell with the
longest common trailing substring, so that bash would select sh, but pocsh
would select csh. Now an exact match is required so that specifying bash
without also giving a path and the other keywords will give an error.

PR:
Submitted by:
Reviewed by: ru
Approved by:
Obtained from:
MFC after:


138273 01-Dec-2004 harti

Remove a double test for the same ptr != NULL and use the official
macro for this; reorder an if.


138264 01-Dec-2004 harti

Style: remove a lot of unnecessary casts, add some and spell the null
pointer constant as NULL.

Checked by: diff -r on the object files before and after


138232 30-Nov-2004 harti

Stylification: missing spaces, extra space after function names, casts
and the sizeof operator, missing empty lines, void casts, extra empty lines.

Checked by: diff on make *.o lst.lib/*.o

Submitted by: Max Okumoto <okumoto@soe.ucsd.edu> (partly)


138228 30-Nov-2004 harti

Constify the array of predefined shells. It turns out that we need two
versions of the structure definition for this: one with const char
pointers, because otherwise gcc won't let us initialize the fields with
constant strings, and one without the const, because we need to work
with the structure.


138222 30-Nov-2004 harti

Change a couple of the primitve list functions to be macros. This changes
the semantic of Lst_Datum which formerly returned NULL when the argument
node was NULL. There was only one place in the source that relied on this
so change that place.


138196 29-Nov-2004 harti

Fix a bug that would truncate the full name of an archive member if
the length of happens to be larger than MAXPATHLEN.

PR: bin/74368
Submitted by: Max Okumoto <okumoto@ucsd.edu>
Obtained from: DragonFlyBSD


138192 29-Nov-2004 harti

Use typedefs for the types of the functions that are passed as arguments
to the list functions for better readability.

Submitted by: Max Okumoto <okumoto@ucsd.edu>


138185 29-Nov-2004 harti

Merge the contents of lstInt.h into the public lst.h. This let's us get
rid of a lot of uneccesary casts and temporary variables that have just
obfuscated the code. This also let's us implement a couple of the one-
liner list functions as macros (the first one is Lst_IsEmpty) and
simplify life once we start to throw consts on the code.


138115 26-Nov-2004 harti

Remove unused file.


138111 26-Nov-2004 harti

Style: prototypes, un-register and remove some empty lines.


138092 25-Nov-2004 harti

Include sys/sysctl.h on all architectures not only i386.


138079 25-Nov-2004 harti

Fix a very long-standing error in handling .SHELL targets: this target
uses the brk_string function to parse the line. That function uses static
storage for both the expanded string and the returned argv[] vector.
The JobParseShell function simply stored away pointers into this static
storage. On the next use of something like ${FOO:O} this storage would
get overwritten with fatal results.

This also allows us to make the shells[] array const bringing us one step
further in making make WARNS=4 ready.


138071 24-Nov-2004 jmallett

Gentle code cleanup for the maximum make(1) level foo. This moves it to a
function, and moves the related defines out of the middle of code body.

Submitted by: Max Okumoto less-than okumoto at ucsd dot edu greater-than


137991 22-Nov-2004 harti

Get rid of the shell table sentinel. It isn't needed anymore because
JobMatchShell returns NULL when no shell name matches since revision 1.51.


137810 17-Nov-2004 harti

Eliminate the define for POSIX and build with Posix behaviour.
Our make has been build with POSIX enabled from the first day
and the ifdef'ed out code served no purpose.


137626 12-Nov-2004 phk

If -B is specified to get compat mode (as opposed to just not giving
a -j arg which does the same thing), remove the MAKE_JOBS_FIFO
environment variable so we decouple any resulting sub-makes from
the token pool.


137610 12-Nov-2004 ceri

Wrap a comment properly.


137606 12-Nov-2004 phk

Add code to enforce the paralleism count (-j N) for the entire tree
of submakes spawned during processing.

We create a fifo and stuff one character into it for each job we are
allowed to run. The name of the fifo is passed to child processes
in the MAKE_JOBS_FIFO environment variable.

A make which finds this variable on startup will open the fifo and
only spawn jobs when it managed to read a token from the fifo.
When the job completes a token is writen back to the fifo.

Slave make processes get one token for free: the one their parent
make got in order to run them. This makes the make processes
themselves invisible in the process counts.

The net effect is that "make -j 12 -s buildworld" will start at
most 12 jobs at the same time, instead of as previously up to
65 jobs would get started.


137605 12-Nov-2004 harti

Fix a (very) long standing bug in make (this has been there probably
from the beginning). Make used to handle all its interrupt-time stuff
directly from the signal handler, including calls to printf, accessing
global data and so on. This is of course wrong and could provoke a core
dump when interrupting make. Just set a flag in the signal handler and
do everything else from the main thread.

PR: bin/29103


137572 11-Nov-2004 phk

Get rid of more local/remote leftovers


137571 11-Nov-2004 phk

Get rid of now unused maxLocal variables.


137252 05-Nov-2004 harti

Now with the remote job support removed there can be no remote jobs and
no jobs that need to be remigrated. Remove the flags and the associated
code.


137202 04-Nov-2004 harti

Remove the remote stuff from make. This actually never worked in our make
because the necessary files were not imported with the original import.
If somebody really needs it, there is still the devel/pmake port.

This is just the first step and removes just everything that is ifdef'ed out.
Otherwise the code is unchanged.

Checked by: md5

Approved by: no objections on arch@


136841 23-Oct-2004 ru

"unset verbose" is 13 characters, not 10.


136840 23-Oct-2004 ru

Expand the scope of the .SHELL specification to also cover
the compat mode of operation and the != operator.

While here, fixed a bug in the .SHELL directive processing
when only the name= attribute is specified and no built-in
shell matches this name, causing null pointer dereference.

Obtained from: NetBSD (except for bugs)


134843 06-Sep-2004 jmg

remove XXX comment now that the kernel is fixed, there isn't any obvious
reason to enable this as performance didn't significantly change...

MFC after: 3 days


133957 18-Aug-2004 ru

Document the effects of modifying the .MAKEFLAGS internal
variable and using the .MAKEFLAGS special target, and the
differences between them.

Reviewed by: harti


133562 12-Aug-2004 harti

Put variable assignments on .MAKEFLAGS and .MFLAGS targets into
the .MAKEFLAGS variable so that these are also passed to sub-makes.
This makes the handling of variables in the command environment more
consistent.

PR: bin/68853
Submitted by: Martin Kamerhofer <data@sbox.tugraz.at>


133388 09-Aug-2004 harti

Make explicit that MAKEOBJDIRPREFIX and MAKOBJDIR must be set
as environment variables and should not be set on make's command
line. They happen to work accidentially as command line variables
too when none of the sub-makes wants to play games with them (because
make is putting command line variables into the environment and will
find them there later on). Makefile.inc1 wants to change
MAKEOBJDIRPREFIX. In this case one cannot set it on the command line.


133120 04-Aug-2004 harti

Correct the .Dd date. Pluralize 'assignment' in one place.

Requested by: ru


133086 03-Aug-2004 harti

Correct the description of the MFLAGS and .MAKEFLAGS variables. Add
the MFLAGS target. Document that variable assignments from the MAKEFLAGS
environment variable and the .MAKEFLAGS and .MFLAGS target have the
same precedence as command line variable assignments.


133085 03-Aug-2004 harti

Put variable assignments from the command line into the MAKEFLAGS
variable as required by POSIX. This causes such variables to be
pushed into all sub-makes called by the make (except when the MAKEFLAGS
variable is explicitely changed in the sub-make's environment).
This makes them also mostly un-overrideable in sub-makes except on the
sub-make's command line. Therefor specifying 'make CC=icc' will cause
icc to be used as C compiler in all sub-makes no matter what the Makefiles
itself try to do to the CC variable.

This patch also corrects the handling of the MFLAGS variable. MFLAGS
contains all the command line flags but not the command line variable
assignments. The evaluation of the .MFLAGS or .MAKEFLAGS target now
changes both MFLAGS and MAKEFLAGS (they used to change MAKEFLAGS only).
Makefiles can use MFLAGS for their own purposes given that they do not
except MFLAGS to be undefined at the beginning and that they don't evaluate
.MFLAGS or .MAKEFLAGS. MFLAGS should be removed for POSIX compliance,
but it is unfortunately heavily used by the X makefiles.

This has been extensively tested by port builds (thanks to portmgr), new
worlds and kernels.

PR: standards/57295 (1st part above)
Submitted by: James E. Flemer <jflemer@alum.rpi.edu>
Approved by: portmgr
Obtained from: NetBSD (1st part above)
MFC after: 4 weeks


133082 03-Aug-2004 harti

Make the SIGCHLD handler static and declare its argument
as unused, so that make can be compiled with WARNS=3 again.


132844 29-Jul-2004 harti

Bump the date in .Dd for the recent '+' flag commit.

Requested by: ru


132839 29-Jul-2004 harti

Implement POSIX's '+' flag for command lines. This flag causes a line
to be executed even when -n is given on the command line to make. This is
very handy for calls to submakes.

This is slightly changed from the original patch as obtained from NetBSD.
The NetBSD variant prints lines which have both '+' and '@' when -n
is specified. The commited version always obeys '@'.

Bump MAKE_VERSION so Makefiles can use this conditionally.

PR: standards/66357 (partly)
Submitted by: Mark Baushke <mdb@juniper.net>
Obtained from: NetBSD


132540 22-Jul-2004 harti

Fix handling of comments on .elif lines. The patch given in a followup
to the PR failed, because the line skipping function is actually called
from two places in the code to do quite different things (this should
be two functions probably): in a false .if to skip to the next line
beginning with a dot and to collect .for loops. In the seconds case we
should not skip comments, because they are actually harder to handle than
we need for the .if case and should defer this to the main code.

PR: bin/25627
Submitted by: Seth Kingsley (original patch)


132439 20-Jul-2004 harti

Improve make's diagnostic of mistmatched .if-.endif. This patch is
slightly different from the patch in the PR. The problem is, that
make handles .if clauses inside false .if clauses simply by
counting them - it doesn't put them onto the conditional stack, nor even
parses them so we need an extra line number stack for these ifs.

PR: bin/61257
Submitted by: Mikhail Teterin <mi@aldan.algebra.com>


132405 19-Jul-2004 harti

Make it clearer what means 'won't work' for .if string == ${VAR}.

Replace the use of '=' in conditionals in the examples
by the more correct '=='.

Clarify the example explaining that .for expansion takes place before
.if handling by showing the correct code instead of saying 'the other
way around'. Change a variable name there so the example is more parseable
to the human reader.

PR: docs/65400
Submitted by: Roman Neuhauser <neuhauser@chello.cz>


132328 18-Jul-2004 keramida

Remove the dependency of the :C/regexp/replacement/ variable modifier
from the :S modifier which follows a bit further below. This way the
reader can read each of these two descriptions without having to jump
back and forth in the manpage.

PR: docs/26943
Submitted by: Alex Kapranoff <alex@kapran.bitmcnit.bryansk.su>


131491 02-Jul-2004 ru

Mechanically kill hard sentence breaks.


131457 02-Jul-2004 eik

manlint

Obtained from: ru


131456 02-Jul-2004 eik

New variable `.MAKEFILE_LIST', useful for tracing, debugging and dependency tracking.

Use
make -V .MAKEFILE_LIST | tr \ \\n | awk '$0==".." {l--; next} {l++; printf "%*s%s\n", l, " ", $0}'
to print a tree of all included makefiles.

Approved by: joerg
MFC after: 1 week


129431 19-May-2004 ru

Markup nits.


128500 20-Apr-2004 green

Treat kevent(2) returning an error EINTR as the non-error it is.


128165 12-Apr-2004 ru

The .DEFAULT target with no commands caused a null pointer dereference.

PR: bin/63405
Obtained from: NetBSD


128161 12-Apr-2004 ru

Document the new .warning directive.


128160 12-Apr-2004 ru

Added the new .warning directive.

Submitted by: Cyrille Lefevre


127899 05-Apr-2004 ru

Unbreak compilation on RELENG_4.

Submitted by: des


127880 05-Apr-2004 des

Sort #includes, remove <sys/types.h> (made redundant by <sys/param.h>),
add <signal.h> (needed for sigaction())

Noticed by: Stefan Farfeleder <stefan@fafoe.narf.at>


126824 10-Mar-2004 ru

Reworked the fix to print the useful line number on error in
the .for loop:

- Replaced four global variables in parse.c with one.
- Made Parse_FromString() accept the "lineno" as an argument.
- Fixed line numbering when there are escaped newlines in the
body of the .for loop.

Adopted from: NetBSD


126779 09-Mar-2004 ru

Make it possible to ``.undef ${VAR}'' (expanding VAR to get
the variable name to undef).

Submitted by: Cyrille Lefevre


126768 09-Mar-2004 ru

Fixed line numbering inside the .for loops.

Submitted by: Cyrille Lefevre


124966 25-Jan-2004 ru

Fixed a bug that previous revision has introduced -- we missed
the double quotes ("" and '') as a separate argument.

Reported by: ache

The fix in this and previous revisions combined is functionally
equivalent to the below patch against rev. 1.27 but the code is
now much easier to follow:

%%%
Index: str.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/make/str.c,v
retrieving revision 1.27
diff -u -r1.27 str.c
--- str.c 28 Oct 2002 23:33:57 -0000 1.27
+++ str.c 25 Jan 2004 12:09:21 -0000
@@ -168,7 +168,7 @@
inquote = (char) ch;
/* Don't miss "" or '' */
if (start == NULL && p[1] == inquote) {
- start = t + 1;
+ start = t;
break;
}
}
%%%


124840 22-Jan-2004 ru

Fixed broken logic when parsing double quotes.

PR: bin/61673
MFC after: 1 month


124803 21-Jan-2004 schweikh

Revert previous commit, ru has ideas how to better document this
elsewhere.


124733 19-Jan-2004 schweikh

Document __MAKE_CONF and its default, /etc/make.conf.

MFC-After: 2 weeks


124420 12-Jan-2004 harti

Allow variable substitutions in SYSV variable substitutions like
$(SRC:.c=$O). This brings us closer to other makes.

Reviewed by: ru
Obtained from: NetBSD


124344 10-Jan-2004 ru

Moved the code for :U and :L modifiers where it belongs, so that
the fallback for SysV (now in POSIX) variable substitution works
for old_string arguments starting with 'U' or 'L'.


123659 19-Dec-2003 scottl

Change the select timeout from 100ms to 2 seconds now that SIGCHILD is
handled.


123513 13-Dec-2003 des

Install a SIGCHLD handler so select(2) will be interrupted when a child
terminates. Without this patch, 'make -j1 buildworld' takes about 30%
longer than 'make -B buildworld' on my 2.4 GHz P4; the difference is
probably even larger on faster systems. With this patch, there is no
perceptible difference in wall time between the two.

Submitted by: bde
MFC after: 3 days


120859 06-Oct-2003 ru

Fix a bug in variable parsing code that could cause a segfault.

PR: bin/46203
Submitted by: Stefan Farfeleder <stefan@fafoe.dyndns.org>


120718 03-Oct-2003 ru

Make the -q option DTRT in the compat mode.

PR: 48210


120676 02-Oct-2003 ru

Fix a bug that prevented exists() from finding "foo/", "foo/."
and "foo/.." when ".PATH: foo" was also given.

PR: bin/34062


120671 02-Oct-2003 ru

Document the recently added `O' modifier.


120184 18-Sep-2003 marcel

Implement the O modifier. The O modifier sorts the words in a
variable. The implementation is based upon the patch sent to
arch@, but modified to be compatible with NetBSD. The modifier
that does a reverse sort has been dropped for now, but the
ability to add one later has been preserved.


120053 14-Sep-2003 ru

- Cut out the code that caches the "." directory out of Dir_Init()
into a separate function, Dir_InitDot().

- Postpone the current and object directories detection (and caching
of the "." directory) until after all command line arguments are
parsed. This makes the -C option DTRT.

PR: bin/47149


119876 08-Sep-2003 ru

Command line variables take precedence over global variables.
Make this true in the .for loops too. The following fragment,

FOO= foo bar

all:
.for f in ${FOO}
@echo ${f}
.endfor

when run as "make FOO=xxx" should print "xxx". (OpenBSD had
this bug fixed for some time.)


119818 07-Sep-2003 imp

Keep up with minor changes to NetBSD. Consider a variable empty when
not define.

Obtained From: NetBSD (rev 1.18; sjg)


117226 04-Jul-2003 ru

Fixed broken arithmetic expression parser.

Reminded by: bde
In memory of: alane


113512 15-Apr-2003 ru

Sync usage() with SYNOPSIS.


113044 04-Apr-2003 imp

No need to check to see if we're running a version of FreeBSD 3.0 current or
newer anymore.


110266 03-Feb-2003 trhodes

Remove another unused Makefile.


109337 15-Jan-2003 marcel

Change the handling of non-anchored global substitutions of the empty
string from a silent implicit non-global substitution to a non-silent
explicit fatal error. Archored substitutions are those containing '^'
or '$'.
The problem with changing the substitution to prevent an infinite
number of matches is that it doesn't provide the necessary feedback
to the user that there's a bug in the/a makefile. Reporting the bug
without making the condition fatal makes the feedback mostly useless
due to the way that make fails to prefix the error with program name,
makefile file name and line number information.
Note that global substitutions of the empty string anchored with '^'
(start of string) or '$' (end of string) do not cause an infinite
number of matches and are therefore not reported and hence are non-
fatal.

Suggested by: bde
Tested with: buildworld


109209 13-Jan-2003 marcel

Prevent infinite substitution of the empty string by forcing non-
global substitution. In general it's a makefile bug to globally
substitute the empty string, but it's a bug in make(1) if a bug
in the makefile yields an infinite running time of make(1).

Not objected to by: arch@


108470 30-Dec-2002 schweikh

Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/
Add FreeBSD Id tag where missing.


108221 23-Dec-2002 ru

Fixed the abuses of .Ql visible on stderr in troff mode.

PR: docs/37176


107964 17-Dec-2002 seanc

Check the return status of chdir() when using the -C option.

Reviewed by: bright && jmallet
MFC after: 1 day


107447 01-Dec-2002 ru

Bootstrapping aid from pre-kqueue(2) systems, e.g. 4.0-RELEASE.

Submitted by: jmallett
Approved by: re (bmah)


107373 28-Nov-2002 ru

Finish the fix in revision 1.39 -- make(1)'s behavior is now
"greedy" with respect to finding the dependency operators.

Approved by: re


106642 08-Nov-2002 jmallett

Convert some broken cases where Error is called, but we try to continue,
to Fatal errors, because the logic that we use to try to continue is far
too broken, and makes things look and act weird, because we end up pointing
past the end of a buffer boundry into freed memory in the caller, as we
don't come close to setting the lengthPtr to a sane value.

Reviewed by: make@

(This only changes failure cases which would have died horrid deaths to
explicit clean death failure cases.)


106286 01-Nov-2002 ru

Document the confusing behavior that the .if conditional defaults
to defined(), e.g., ``.if 1'' is equivalent to ``.if defined(1)'',
which is only true when the ${1} variable is defined.


106143 29-Oct-2002 ru

bsd.doc.mk changes:

Don't gratuitously pipe thru a cat(1) if NODOCCOMPRESS.

Only create _stamp.extra when necessary.

Get rid of SOELIMPP and OBJS.

Use Groff version of soelim(1); we need its -I option
for the following to work.

Don't needlessly chdir to SRCDIR. Only a few documents
need CD_HACK, and those that need it either use refer(1)
or .PSPIC macro which internally uses the .psbb call.


106134 29-Oct-2002 jmallett

In VarHead(), look into the correct (modified) string.


106125 29-Oct-2002 ru

Mention that the left-hand side of the comparison
conditional must always be a variable expansion.

Obtained from: PMake

Do not lie that debugging .for loops is a no-op.


106106 28-Oct-2002 jmallett

Split var.c into var.c and var_modify.c and move all the modification funcs
to var_modify.c, for readability. constify some low hanging fruit (string
manipulation functions) and the upper layers appropriately. No longer use
the private strstr(3) implementation, while changing string code.

Tested by: lots of successful make buildworld.


105895 24-Oct-2002 jmallett

Fix problem with my ability to tell the difference between 'r' and 'l'... We
want to check var[1], not val[1].

Submitted by: Mark Valentine <mark@thuvia.demon.co.uk>
Pointed out by: sam
Pointy hat to: jmallett


105865 24-Oct-2002 jmallett

When expanding a specific [1-char] variable, only expand said specific
[1-char] variable. Don't just automatically expand something which
starts with that character.

Obtained from: OpenBSD [3 years ago!]


105846 24-Oct-2002 jmallett

Duplicate the variable name in the v->name field, as otherwise it points to
data that will be modified. And do the appropriate thing now and free the
v->name buffer along with other relinquished memory.

XXX There is duplication here of destroying a Var, which is probably bogus,
and probably missed in a few places.


105826 23-Oct-2002 jmallett

Remove efree(), it isn't used consistently enough to even pretend that it
might help on the systems it could possibly be used as a bandaid for. In
fact, the only thing it's useful for is instrumenting free(3) calls, and in
that capacity, it's better served as a local patch, than a public wrapper.


105754 23-Oct-2002 jmallett

De-obfuscate and correct the include path handling for SysV style includes.

PR: 32759
Submitted by: Mark Valentine
Reviewed by: Matthew Emmerton" <matt@gsicomp.on.ca>
MFC after: 15 days


104818 10-Oct-2002 jmallett

Move utilitarian routines to util.c, which isn't the same as the old
compatability-geared util.c. These are things like message printers
and the PrintAddr function for traversing lists. Other general-purpose
utilities inside make(1) can go here, in time.


104696 09-Oct-2002 jmallett

Convert make(1) to use ANSI style function declarations. Variable
documentation already adequatedly existed in the description in most
cases. Where it did not, it was added. If no documentation existed
beforehand, then none was added. Some unused dummies for use in the
traversal functions were marked as __unused during the conversion.
Occasionally, local style fixes were applied to lines already being
modified or influenced.

Now make(1) should always build with WARNS=3.


104694 09-Oct-2002 jmallett

Use __FBSDID in the lst.lib files, to match to main make(1) files. It is
defined to __RCSID when bootstrapping, by the Makefile, but this change is
for consistency


104693 09-Oct-2002 jmallett

Remove extern declarations from functions and source files where they would
happily fit into headers.


104692 09-Oct-2002 jmallett

Remove unused local-locals, where upper-level locals may safely be used.


104689 08-Oct-2002 jmallett

Reference the correct local variable in all parts of a for loop, so we
operate on the correct data (properly).

Tracked down by: Dan Nelson


104475 04-Oct-2002 phk

Give make(1) the ability to use KQUEUE to wait for worker processes
instead of polling for them.

Unfortunately we cannot enable it yet because it panics the kernel
somewhere in kqueue.

Submitted by: Stefan Farfeleder <e0026813@stud3.tuwien.ac.at>


104395 03-Oct-2002 jmallett

In lieu of a good way to prevent every possible looping in make(1), stop
there from being more than 500 processes forked by make(1), to prevent a
forkbomb from happening, in a dumb and mechanical way.

PR: alane
Submitted by: bin/42772
MFC after: 2 weeks


104375 02-Oct-2002 jmallett

Code that has been #if0'd with the comment "WHY" since revision 1.1 can
disappear.


104374 02-Oct-2002 jmallett

Remove 6-years-stale #if0, the behaviour isn't ever going to be limited to
compatible mode, as far as I know, since we use it...


104125 29-Sep-2002 jmallett

Fix spurious three-space indentation in a four-space indentation file.


104123 29-Sep-2002 jmallett

Fix ability to use csh(1) as the make(1) shell.

Sponsored by: Bright Path Solutions


104121 28-Sep-2002 jmallett

Make make(1) WARNS=6 clean except for const issues. This mostly involves
renaming variables to not shadow libc functions or greater scope locals. Kinda
makes one wonder if the extern ones weren't meant in some of these places :)

The only thing I'd still like to do WRT this is possibly combine rstat and
status in compat.c -- that should be fine, as I do not think the codepaths
will want both around at once.

Sponsored by: Bright Path Solutions


104109 28-Sep-2002 jmallett

Fix merge error in previous commit.

Sponsored by: Bright Path Solutions


104108 28-Sep-2002 jmallett

Add empty default cases where they should be, remove non-local execution stuff
in compat.c which doesn't even have preprocessor-conditional-hidden support
code, and add a debugging statement where we might end up with a nil list
somehow, but where I doubt it.

First confirmed userland kill for Flexelint.

Sponsored by: Bright Path Solutions


104032 27-Sep-2002 ru

Document the parsing bug.


103991 26-Sep-2002 jmallett

Remove a semicolon that appears to be a lie.

Spotted by: SPARC64 make WARNS=3
Sponsored by: Rachel Hestilow <rachel@jerkcity.com>


103990 26-Sep-2002 jmallett

When formatting the time for a target, use %H instead of %k, which is mostly
the same, but uses a non-extension option.

Sponsored by: Rachel Hestilow <rachel@jerkcity.com>


103981 26-Sep-2002 jmallett

Don't declare things as extern when they will be static.

Sponsored by: Rachel Hestilow <rachel@jerkcity.com>


103545 18-Sep-2002 jmallett

Make the DEBUGF() macro portable by (ugh) adding a Debug() function, which
is merely printf() but to stderr. This takes care of the caveat which lead
to the use of a vararg macro -- getting everything to stderr.


103508 17-Sep-2002 jmallett

Move common use of if (DEBUG(FOO)) printf... to DEBUGF(FOO, ...), using
variable length arguments to a macro. Bump version as this makes DEBUG
statements *always* go to stderr rather than sometimes stdout. There are
a few stragglers, which I will take care of as soon as I can. Mostly these
relate to the need-for-death-of some of the remote job code.

Nearby stylistic nits and XXX added/fixed where appropriate.


103503 17-Sep-2002 jmallett

#define<space> -> #define<tab>


103502 17-Sep-2002 jmallett

Print debugging from DEBUG(VAR) level to stderr. About to macroise this.
(Read: More commits to come).

MFC in: 4 days.


103030 06-Sep-2002 archie

Make it clear that the ":C" variable modifier expects an extended
regular expression instead of an obsolete regular expression.
Also, cross-reference re_format(7) instead of regex(3).

MFC after: 3 days


102692 31-Aug-2002 peter

Deal with bootstrapping from an old -current (almost exactly a year old)
which fails the make tests (doesn't understand ${notdef:U}) and therefore
fails on __FBSDID in usr.bin/make/*. -DBOOTSTRAPPING is no help here since
this is before we are using the new share/mk/* files, and it would conflict
with the builtin -DBOOTSTRAPPING support later.. so use a different flag.


102393 25-Aug-2002 jmallett

Add a -C ala GNU make(1) for Makefiles which are too lazy to use $(MAKE) and
this particular GNU flag. It changes into the given directory for the
operation in question. This just goes into said directory at the time of
parsing the argument for getopt(3).

Submitted by: Rachel Hestilow <rachel@jerkcity.com>


102178 20-Aug-2002 ru

Allow embedded `:' and `!' in target names.

PR: bin/6612
Obtained from: OpenBSD
MFC after: 1 week


102084 19-Aug-2002 jmallett

Remove local prototypes for main().


101672 11-Aug-2002 ru

main.c:450: warning: `targs' might be used uninitialized in this function

Spotted by: patrick@godloveya.com, naddy, -Wuninitialized

This segfaulted alpha and sparc64; i386 had this magically zeroed.


101460 07-Aug-2002 ru

Pacify ``make -f /dev/null -V FOO''.


100792 28-Jul-2002 jmallett

Print a warning when we are given two scripts for one target. This is neither
as wide-reaching nor intensive as NetBSD's similar, but the warning uses the
same text.

Inspired by: NetBSD


100733 26-Jul-2002 imp

Back out jmallett's realpath changes. They break a set of makefiles that
we use in sublte ways with relative paths. Until they can be resolved,
back out these changes and put a big comment about why using realpath is
busted.

Approved by: jmallett
MFC After: 100 millifortnights


100037 15-Jul-2002 jmallett

Bit-width fields should be of type 'int'.


100036 15-Jul-2002 jmallett

Use %zu to print size_t.


98509 20-Jun-2002 jmallett

Fix a bug fixed by NetBSD in revision 1.42 of parse.c by christos which caused
an example Makefile I was showing someone just last night to report a variable
as being recursive.

Obtained from: NetBSD


98508 20-Jun-2002 jmallett

More unsigned char casts to isupper(3).

Obtained from: NetBSD


98506 20-Jun-2002 jmallett

Provide a heuristic for RCS conflicts.

Obtained from: NetBSD


98502 20-Jun-2002 jmallett

Look for wildcards, and balanced meta-characters such as { and } like NetBSD
does.

Obtained from: NetBSD


98501 20-Jun-2002 jmallett

Expand a buffer to reduce diffs to NetBSD.

Obtained from: NetBSD


98500 20-Jun-2002 jmallett

Diff reduction for great justice against NetBSD, cast to unsigned char when
passing an argument to isspace(3).


98441 19-Jun-2002 jmallett

Fix a memory leak from previous commit by freeing the possibly expanded
string at the first opportunity, being sure to now always allocate the
new string from VarPossiblyExpand. Oops.


98439 19-Jun-2002 jmallett

Possibly expand the variable name's embedded variables before using it, as
seen (somewhat) in NetBSD. This catches a few extra recursion cases that
could be hidden by expanding a NIL variable causing an existing variable to
be returned (which caused infinite looping and climbing memory usage in at
least one case).

Obtained from: NetBSD (in principle)


98346 17-Jun-2002 jmallett

make(I) appeared in PWB UNIX.


98164 13-Jun-2002 jmallett

Avoid classy use of a variable one time with a constant value.


98163 13-Jun-2002 jmallett

Use %p to print a pointer, not %lx and a cast to (unsigned long). Yuck.


98162 13-Jun-2002 jmallett

Don't do stupid things to avoid unused parameters, mark them __unused.


98138 12-Jun-2002 jmallett

String lengths and sizeof()s are size_t not int. Mark an unused parameter
of ReadMakefile as __unused, it's there because this function is used by
the abstracted list interface which normally deals with item handlers which
take two arguments. Add a missing static prototype.


98136 12-Jun-2002 jmallett

The error functions take constant pointers to strings for their format.


97686 01-Jun-2002 jmallett

Remove a stray asterisk in a comment.


97538 30-May-2002 ru

mdoc(7) police: removed unnecessary .Ns's.


97251 24-May-2002 ru

Back out the ``run shell from $PATH'' change; this was an overkill
and is insecure.

Requested by: bde


97163 23-May-2002 jmallett

Set the MAKEFILE variable to the value passed to ReadMakefile(), not the full
path to it. Use the full path only for parsing it.


97123 22-May-2002 jmallett

str_concat() doesn't really take const arguments.

Submitted by: bde
Pointy hat to: jmallett


97122 22-May-2002 ru

Do not run shell from /bin, run it from $PATH.
Bump MAKE_VERSION to 5200205221.


97121 22-May-2002 ru

Added the MAKE_VERSION global that could be useful in determining
if a given make(1) is feature-compatible with a set of makefiles.

When merged, this will be used to replace the ugly upgrade_checks
hacks in src/Makefile.

Version has the RYYYYMMDDX format, where R is from RELENG_<R> and
X allows for 10 distinguishable changes per day.

Discussed with: bde


97104 22-May-2002 jmallett

Replace the evil that is __DECONST() with (void *). This is one of the least
evil things we can do involving the const qualifier and a pointer.

Submitted by: bde, ru


97077 21-May-2002 jmallett

Make ReadMakefile() operate using the realpath(3) name for the file handed to
it, which means that relative paths will be expanded to absolute paths, and
filenames without a path will end up with their absolute path included as
well. This aids tremendously in debugging a build using our make(1) with
multiple Makefile's, such as when there is a syntax error in a file in a
sub-directory as per <bsd.subdir.mk>. Normally we'd end up with just
"Makefile" known about the Makefile in question, which means that an error
would be useless for someone trying to debug their build system, now we
end up with a complete real pathname for the Makefile.

So mostly this is useful in a debugging context, but possibly others too
(I haven't thought of them yet, but they probably are more useful if you
make Dir_FindFile use realpath(3), but that's another story).

Reviewed by: -current
MFC after: 2 weeks


96704 16-May-2002 trhodes

More consistancy. file system > filesystem


96071 05-May-2002 jmallett

Fix make(1) behaviour regarding SysV-style substitution when given a nil
left-hand-side.

PR: bin/5297
Submitted by: "Matthew Emmerton" <matt@gsicomp.on.ca>
MFC after: 1 week


95124 20-Apr-2002 charnier

Use `The .Nm utility'


95020 19-Apr-2002 obrien

Move the sysV variable substitution up with the BSD feature that replaced it.


94990 18-Apr-2002 ru

Do not reset MAKEFILE when reading ".depend" as this rather
eliminates the usefulness of ${MAKEFILE}.

Obtained from: NetBSD
MFC after: 1 week


94638 14-Apr-2002 obrien

Back out rev 1.17, it breaks dependencies.
With rev 1.7 one cannot build src/bin/sh -- because make fails to create
the buildtools before trying to use them. Actually it does compile the
buildtools into .o's before trying to use them, but not all the way into
binaries.


94607 13-Apr-2002 obrien

Revision 1.17 seems to break a subsequent buildworld (i.e. with the new
make installed) in gnu/usr.bin/groff/src/preproc/eqn (which, being a
build tool itself, is built with the original make during buildworld).

The problem seems to be that in str_concat(), the string is not
terminated when the length of the second string is 0.
This apparently can happen during null suffix rule processing.

Submitted by: tmm


94595 13-Apr-2002 obrien

Fix a minor lint warning.


94594 13-Apr-2002 obrien

Prefer BSDmakefile over makefile and Makefile.

Submitted by: jmallett
Obtained from: OpenBSD


94589 13-Apr-2002 obrien

Fix copyrights, and undo SCS ID damage.


94587 13-Apr-2002 obrien

Update SCM ID method.


94585 13-Apr-2002 obrien

Make str_concat handle NULL arguments properly (a-la how ODE-2.3.6 make does).

Submitted by: jmallett
Inspired by: CMU BUILDTOOLS4 coredumping, ODE-2.3.6 make(1)


94584 13-Apr-2002 obrien

De'register.


94583 13-Apr-2002 obrien

Constify str_concat()

Submitted by: jmallett


94582 13-Apr-2002 obrien

Check to make sure fdopen() succeeds in make(1).

Submitted by: jmallett
Inspired by: NetBSD


94513 12-Apr-2002 charnier

Un.Ar makefile. The add of .Ar was part of my last commit.
Asked by: ru


94506 12-Apr-2002 charnier

Reorder #include. Cast arg #2 of lseek to an off_t when constant. No need to
test if failsafe memory allocation fails, it can't. perror -> warn. Use
failsafe memory allocation provided.

Use .Pa and .Ar. Uppercase (first letter) programname after dot.


93056 23-Mar-2002 imp

o unifdef -D__STDC__
o remove badly bit-rotted compat file that likely won't work on the systems
it purports to support.


92921 22-Mar-2002 imp

remove __P


90965 20-Feb-2002 cjc

make(1) claims to ignore the remainder of a conditional once its value
has been determined similar to C. That is, one expects a construction
like,

.if defined(TEST) && (${TEST:L} == "test")

Never to generate an error since the second expression should never be
evaluated when TEST is undefined.

However, this was not the case. The above fails with the current
make(1) if TEST is undefined. This patch fixes the above and many
similar cases.

PR: bin/34032
Submitted by: Alan Eldridge <alane@geeksrus.net>
MFC after: 1 week


89282 12-Jan-2002 schweikh

Make substitutions in internal macros like $(@F:.o=.c) work.
This should not affect our build process, as

find /usr/src -name Makefile | xargs grep '@[DF]'

has no matches (other than FreeBSD.org email addresses :-)

PR: bin/24377
Submitted by: Mark Valentine <mark@thuvia.demon.co.uk>
Reviewed by: Matthew Emmerton <matt@gsicomp.on.ca>
MFC after: 4 weeks


81449 10-Aug-2001 ru

mdoc(7) police: protect trailing full stops of abbreviations
with a trailing zero-width space: `e.g.\&'.


80381 26-Jul-2001 sheldonh

Use STD{ERR,IN,OUT}_FILENO instead of their numeric values. The
definitions are more readable, and it's possible that they're
more portable to pathalogical platforms.

Submitted by: David Hill <david@phobia.ms>


79790 16-Jul-2001 ru

Clarify that MAKEOBJDIR and MAKEOBJDIRPREFIX are environment variables.

Submitted by: bde


79755 15-Jul-2001 dd

Remove whitespace at EOL.


77054 23-May-2001 obrien

Note that sys.mk is read before any other file (even Makefile)


76801 18-May-2001 sobomax

By default build make(1) as a static binary. It costs only 100k of additional
disk space, buf provides measureable speed increase for make-intensive
operations, such as pkg_version(1), `make world' and so on.

MFC after: 1 week


76163 30-Apr-2001 dd

mdoc(7) police: remove hard sentence breaks.


76012 26-Apr-2001 will

Remove GCC-ism (-Wall).

Submitted by: bde


75976 25-Apr-2001 ru

Add -Wall.


75975 25-Apr-2001 ru

-Wall cleanup.


75974 25-Apr-2001 ru

unifdef -UWANT_ENV_PWD.

No one ever going to use this bugfeature.


75973 25-Apr-2001 ru

Make ${.OBJDIR} canonical.

Reviewed by: bde


74294 15-Mar-2001 billf

with my mentor hat on...

remove the concept of a 'maintainer' of our make. there really isn't a
need for any one committer to hold an exclusive lock or serve as a filter
for this code.


74293 15-Mar-2001 will

Revert previous change -- apparently it's not quite right. It broke
src/sys/modules/if_ef and possibly other things. I tested the build with
a make based on rev. 1.26, and it worked fine. Since I'm not particularly
inclined to figure out what's going on with this, it's probably prudent
just to back it out for now.

Found by: jkh
Suggested by: jhay


74272 15-Mar-2001 will

Fix make(1) bug: nested comments may be placed in .if, .else .if, and
.endif statements but can't be placed in .elif. Basically, the problem
was that ParseSkipLine() didn't handle comments the same way that
ParseReadLine() did, and thus you had errors with comments that are on a
conditional line (i.e. "^.") rather than a non-conditional line.

MFC candidate for 4.3-STABLE and 3.5-STABLE.

PR: 25627
Bug found by: jhs
Fix submitted by: Seth Kingsley <sethk@osd.bsdi.com> (thanks!!)


73970 08-Mar-2001 tmm

Fix two bugs in null suffix handling. Both occured only after the suffix
list was cleared.
Rules with null suffixes would not be rebuilt when the suffixes were
added again.
Adding null suffix rules would fail when a rule for the same source was
declared before the suffix list was cleared.

PR: 23328, 24102
Reviewed by: will
Approved by: rwatson


73265 01-Mar-2001 imp

Include -DDEFSHELL=1 in Makefile.dist so people boostrapping will
have a sane default.

Also add $FreeBSD$ while I'm here.

Pointed out by: bde


73262 01-Mar-2001 imp

MAXPATHLEN includes the trailing NUL.

Correct array sizes to reflect this.
Correct NUL termination after strncpy.

# Didn't to strncpy -> strlcpy change.


72679 19-Feb-2001 kris

Introduce support for using OpenSSL ASM optimizations. This is done
through the use of a new build directive, MACHINE_CPU, which contains a
list of the CPU generations/features for which optimizations are desired.
This feature will be extended to cover the ports tree in the future.

Currently OpenSSL provides optimizations for i386, i586 and i686-class
CPUs. Currently it has not been tested on an i386 or i486.

Teach make(1) to provide sensible defaults for MACHINE_CPU if it is not
defined (namely, the lowest common denominator CPU we support for each
architecture). Currently this is i386 for the i386 architecture and ev4
for the alpha. sys.mk also sets the variable as a last resort for
consistency with MACHINE_ARCH and bootstrapping from very old versions of
make.

Benchmarks show a significant speed increase even in the i386 case, with
additional improvements for i586 and i686 systems. For maximum performance
define MACHINE_CPU=i686 i586 i386 in /etc/make.conf.

Based on a patch submitted by: Mike Silbersack <silby@silby.com>
Reviewed by: current


72645 18-Feb-2001 asmodai

Preceed/preceeding are not english words. Use precede and preceding.


72371 11-Feb-2001 dwmalone

Uname is in section 3 of the manual pages.

PR: 25008
Submitted by: fullermd@over-yonder.net


72310 10-Feb-2001 will

Fix nasty bug where make(1) assumed that you could read the directory it
was in. This shall be MFC'd in about three days (probably not a good idea
to MFC the stylistic changes though - see below).

PR: 19978
Submitted by: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
Patch by: roam (slightly modified by me to use NULL not NIL)


71895 01-Feb-2001 ru

mdoc(7) police: split punctuation characters + misc fixes.


71325 21-Jan-2001 will

Fix style(9) bug; use ISDOT[DOT,]() macro available in util.c by moving
it to make.h so both dir.c and util.c can use it, although bde didn't
particularly like this part of the idea, IMO it's cleaner than it was.

Submitted by: bde


71102 16-Jan-2001 ru

Prepare for mdoc(7)NG.


70358 26-Dec-2000 will

Fix for the case where the first two entries returned by readdir() are
actually NOT '.' and '..'. Apparently this isn't the case when accessing
a directory via XFS over NFS on SGI systems. Since I don't have access to
an environment like that, this will sit out in -current for at least six
weeks. However, the patch proposed by the submitter seems acceptable, so
I've decided to commit it to the tree, in the hope that it will solve some
problems without bringing up others.

PR: 23300
Submitted by: Jim Pirzyk <Jim.Pirzyk@disney.com>


70197 19-Dec-2000 ru

Prepare for mdoc(7)NG.


70080 16-Dec-2000 des

Fix a bug introduced in rev. 1.17: initialize variables before use, not after.

Rev. 1.17 was "Obtained from NetBSD", but is significantly different from the
equivalent NetBSD revision (rev. 1.30), which does not have this bug.


69531 02-Dec-2000 will

There's also no point in #typedef'ing void/char pointers. Accordingly,
rip out ClientData/Address pointers and use standard types.

Obtained from: OpenBSD


69527 02-Dec-2000 will

There's no reason to use fancy forms of NULL. Replace all instances
of NIL, NILLST, NILLGNODE, etc. with NULL.

Obtained from: OpenBSD


69390 30-Nov-2000 will

Format string paranoia. This should avoid potential buffer overflows from
user input (in its ever-broadening definition).

Obtained from: NetBSD


69355 29-Nov-2000 nik

Xref make.conf(5), and point to /usr/share/doc/psd/12.make for the
tutorial paper.


69107 24-Nov-2000 ru

Reimplement the groff(1) warnings elimination fixes in a better way.


69095 23-Nov-2000 ru

Eliminate groff(1) warnings.


68963 20-Nov-2000 ru

mdoc(7) police: use the new features of the Nm macro.


68898 19-Nov-2000 kris

Unlink the temporary file immediately so it is removed on exit.

Obtained from: OpenBSD


66854 09-Oct-2000 will

Add :L and :U variable modifiers. These convert the variable's value to
all-lower or all-upper case characters, respectively. These were added
to further reduce differences between NetBSD/OpenBSD and FreeBSD make(1)
to propagate OpenPackages.

PR: 19959
Submitted by: Gaspar Chilingarav <nm@web.am>


66853 09-Oct-2000 will

Add :C/// variable modifier, which is similar to :S/// in functionality
but allows for regex. I removed NO_REGEX since no one could give a reason
to have it, and since we don't use make in bootstrap tools, it's not needed.

This is mostly added to synch up with NetBSD/OpenBSD so as to eliminate
roadblocks in the OpenPackages project (see http://www.openpackages.org/).
It's also quite useful, and costs us only about 3 kilobytes of space.

PR: 21605
Submitted by: Hubert Feyrer <hubertf@NetBSD.org>
Reviewed by: silence on -arch
Obtained from: NetBSD


66465 29-Sep-2000 will

Assume MAINTAINER. I will be taking the job of merging NetBSD/OpenBSD
improvements (including :C & :L, among others). After that, I'll be coming
up with other ways to improve make(1).

Discussed in spirit with: peter


66365 25-Sep-2000 peter

*** empty log message ***


64823 18-Aug-2000 ru

Remove gratuitous free() call when we use special .SHELL target.


64739 16-Aug-2000 green

Allow use of the ${MAKE_SHELL} variable to specify alternate shells for
make(1) to use. Setting it to "sh" and "ksh" are the only values which
work right ATM; I wouldn't expect "csh" to get you far ;)


63955 28-Jul-2000 imp

Do include <unistd.h> for getopt interface.
Don't extern it.


63317 17-Jul-2000 sheldonh

Use pwd instead of cwd in backticks. cwd in backticks doesn't do
anything useful in a Bourne shell.

PR: 19980
Submitted by: Alex Kapranoff <alex@kapran.bitmcnit.bryansk.su>


62835 09-Jul-2000 ache

Fix assembler error messages - there is no \n allowed in __COPYRIGHT macro


62833 09-Jul-2000 wsanchez

Use __RCSID()


62831 09-Jul-2000 wsanchez

Use __RCSID()


62830 09-Jul-2000 wsanchez

Initialize variable


60570 14-May-2000 will

Update make(1) manpage to include information about the new loud
debugging facility I introduced earlier today.


60569 14-May-2000 will

Add loud debugging facility (-dl option) which allows programmers/developers
to override @-prefixed commands in Makefiles. It is especially useful for
debugging ports and/or complex Makefiles in such a manner that is basically
a last resort, but is quite effective if the output is well-handled.

I'll update the manpage after dinner. ;-)

Better patch submitted by: steve
Reviewed by: phk, steve, chuckr, obrien,
Lyndon Nerenberg <lyndon@orthanc.ab.ca>


59217 14-Apr-2000 imp

#include <errno.h> where needed. Kill extern int errno;.

Minor warnings in tip corrected.


57670 01-Mar-2000 sheldonh

Remove single-space hard sentence breaks. These degrade the quality
of the typeset output, tend to make diffs harder to read and provide
bad examples for new-comers to mdoc.


57666 01-Mar-2000 nik

Fix errors in .Xr usage.

PR: docs/17057
Submitted by: Submitted by: Udo Erdelhoff <ue@nathan.ruhr.de>


56280 19-Jan-2000 ru

${.MAKE} -> ${MAKE}

Reviewed by: hoek


56151 17-Jan-2000 kris

Create tempfiles securely.

Reviewed by: imp


54147 05-Dec-1999 cracauer

Make '||' visible.

PR: docs/15265
Submitted by: Kazu TAKAMUNE <takamune@avrl.mei.co.jp>


53631 23-Nov-1999 marcel

Improve backward compatibility.

make(1) uses sysctlbyname() to find out if it is running on a PC98
machine. This check has been added on 1998/9/9. The MIB variable was
added on 1998/8/31. At that time __FreeBSD_version was 300003. So,
only perform the check *if* __FreeBSD_version is defined and if it's
greater than 300003.

For the record: sysctlbyname was added on 1997/5/30 so this change
automaticly handles that...


53186 15-Nov-1999 marcel

Remove CROSS_MAKE_FLAGS.


52109 10-Oct-1999 julian

Fix the following:
It appears that make fails to read the global symbol table of the archive file,
making it think that the library needs to be rebuilt.

fix supplied in PR:

PR: bin/14167
Submitted by: Sebastian Lederer <lederer@bonn-online.com>
Reviewed by: gallatin@FreeBSD.ORG


51155 11-Sep-1999 hoek

s/with historical makefils//. Also, relocate and change the description
of VPATH to be a little sexier. I'd say it looks a bit like Claudia
Schiffer now, which I consider a definate improvement. We're also a little
more subtle about saying that VPATH is for backward(s) compatibility.

Submitted-by: chris, bde, and myself
[although none of their descriptions were as sexy
M(|is|r)s Schiffer, of course].


51151 11-Sep-1999 hoek

Remove the #include of sys/param.h. It was meant to improve portability
for BSD less than 4.4 where sys/cdefs.h DNE but can be simulated with
param.h. Unfortunately, the additional include did little to actually
improve portability since we've lost portability in several other chunks
of make code (err(), sysctlbyname(), probable more).

Partly submitted by: bde


51150 11-Sep-1999 hoek

Unduplicate IDs from comments, do $Id -> $FreeBSD$ (submitted-by: bde)


51132 10-Sep-1999 julian

Allow 'make' to check out elements within archive libraries.

"Make no longer properly parses archive files, so using archive members
as make targets, as described in PSD:12 section 4.2, does not work."

Really should be merged into 3.3 before we ship if we can..
it's a trivial fix.

PR: bin/13039, bin/10274
Submitted by: Mikko Tyolajarvi mikko@dynas.se


50477 28-Aug-1999 peter

$Id$ -> $FreeBSD$


50145 22-Aug-1999 hoek

Fix a temp file race occurring only when -j is used.

Noticed by: ru
Obtained from: OpenBSD


49938 17-Aug-1999 hoek

Merge style- and trivial- only changes from OpenBSD (dated 1999/07/29-19:55+1).

Obtained from: OpenBSD, sometimes indirected from NetBSD; myself


49736 14-Aug-1999 chris

Bad reference of getcwd(2) changed to getcwd(3).


49665 12-Aug-1999 chris

Make VPATH explanation more concise. I apparently was not thinking
on the previous commit.


49663 12-Aug-1999 chris

Move ${VPATH} explanation under the .PATH rule section.

Clarify my vague explanation of how ${VPATH} works and why it shouldn't
be used.


49658 12-Aug-1999 hoek

Bugfix to last commit: Correctly intuit when an lhs is a string vs. number.


49633 11-Aug-1999 chris

Document ${VPATH} and that it _should_not_ be used in any new Makefiles.

PR: 10556
Submitted by: Dominic Mitchell <Dom.Mitchell@palmerharvey.co.uk>


49332 31-Jul-1999 hoek

Add a -E flag, similar to -e (overide variables from environment) except
that -E only operates for a specified variable. Useful since the -e option
will often pull-in many unwanted variable overrides (esp. in a make world
situation). Uses include overriding BINOWN (which cannot be done by normal
methods or through abuses of MAKEFLAGS) or likely for ports to honour CFLAGS
(provided they're running on a system whose make(1) has this option).


49331 31-Jul-1999 hoek

Print an error message on illegal numerical arguments.

Submitted by: bin/9349 (slightly modified) Assar Westerlund <assar@sics.se>


49330 31-Jul-1999 hoek

When printing an error message after command execution fails, don't assume
the only possible error is "command not found". This makes debugging of
messages such as "/bin/sh: not found" less common...


48654 07-Jul-1999 imp

Per requests from the community, commit rudimentary cross compilation
support. I've been building world with these changes for months w/o
ill effect. I've also managed to build the cross tool chain for MIPS
with these patches.

Please note that the extent to which these patches work is largely
dictated by how well our tool chains support the cross compilation.
Building alpha binaries on i386 doesn't work. Supposedly building
i386 binaries on alpha does work, but I've not verified it with these
patches, however.


47494 25-May-1999 hoek

Handle ".if ${T} > 1 || ${T} < 3" and friends correctly.

Reported-by: asami


45806 19-Apr-1999 imp

Add :Q to quote variable expansion to all proper expansion of
variables for recursive makes. This makes it less painful to cross
build recent NetBSD kernels on FreeBSD.

Obtained from: NetBSD


44362 01-Mar-1999 imp

Make MACHINE_ARCH sensitive to the environment, as well as using the
compiled in default in case it isn't defined. This is needed to make
cross compilation work in some edge cases. It also makes cross
compiling on FreeBSD other BSD's easier as well.

Obtained from: NetBSD, OpenBSD (predates the split)


44026 14-Feb-1999 dt

Remove couple of 'extern int errno'. (They turned to something funny when
<errno.h> included).


42409 08-Jan-1999 jkh

Don't allow pointer underrun in loop.

Spotted by: John W. DeBoskey <jwd@unx.sas.com>


41410 29-Nov-1998 pds

Described the search path Make uses to find makefiles.


41161 15-Nov-1998 bde

Fixed missing 'v' in usage message.


41160 15-Nov-1998 bde

Fixed bugs in previous commit:
- missing `v' in synopsis.
- 'v' disordered relative to 'V' in description of options.
- line too long in description of 'v'.


41151 14-Nov-1998 dg

Added a -v (verbose) option and hid multi-job file banner generation
behind it.


40500 18-Oct-1998 obrien

Only process the ``PWD'' environmental var if built with "WANT_ENV_PWD"
defined. Bash v2 sets PWD and it creates major problems for those of us
with /usr/src being a symlink. See the lists for examples of the problems.


40392 15-Oct-1998 jdp

Fix make world breakage from last commit.


40388 15-Oct-1998 jkoshy

Fix a serious bug in make(1)'s handling of archive libraries.

This case did not need to be tested when RANLIBMAG was defined
(as when in an `aout' environment) because Arch_StatMember() treated
the two cases of the library not being present and a member of
the library not being present the same way, forcing a rebuild
of the library. Since in the ELF environment we don't look inside
archive libraries we now need to check if the archive library is
present in order to determine its `out-of-date'-ness.

(I hope I've been able to meet the Oct 15th freeze).

Reported-by: Steve Price (and a few others whom I've forgotten, sorry)


39006 09-Sep-1998 kato

Set the `pc98' string to the MACHINE if machdep.ispc98 != 0.


38985 09-Sep-1998 jb

Don't define RANLIBMAG if building an elf version of make. The RANLIBMAG
option lets make look inside archive libraries when determining if a
library is out-of-date. I don't think that make should look inside
files, so this fix effectively tells it not to. If the decision is
made (by someone else) that make _should_ be doing this, it will need
to be taught how to recognise elf archive libraries.

Problem noticed by: Joseph Koshy <jkoshy@freebsd.org>


38971 09-Sep-1998 jkoshy

Fix spurious `free()' when -d g2 is enabled.

PR: 6790
Submitted by: nsmart <njs3@doc.ic.ac.uk>


38520 24-Aug-1998 cracauer

When exiting on SIGINT, exit with signal status


37872 26-Jul-1998 imp

Use malloc + sprintf rather than asprintf to ensure portability to
other, less advanced architecutres. This should minorly help porting
efforts of FreeBSD. I've done several make worlds since this came up
with this change, as well as debugging several interesting nits with
-V (which is the only thing this change will affect really).


36942 13-Jun-1998 peter

Make -V expand it's arguments. This means that instead of 'make -V OBJS'
printing something useless (to a shell) like: ${SRCS:N*.h:R:S/$/.o/g}
it will instead print the actual ${OBJS} value.


36621 04-Jun-1998 bde

Don't forget to pretend that `make -n -jN' makes the targets that it
says it pretends to make.

This bug was apparently harmless except for normal cases involving
.ORDER statements when it made debugging of -jN using -n very
confusing. E.g., for:

.ORDER: beforedepend .depend
depend: beforedepend .depend

where beforedepend depends on something so that it is not initially
up to date, `make [-n] -j2 depend' causes `make' to wait for itself
to make beforedepend. This works fine without -n. The job to make
beforedepend has normally been started, and beforedepend is marked
as made when the job completes. However, with -n, the pseudo-job
for making beforedepend has normally completed, and in any case
there was no chance of beforedepend being marked as made. `make'
actually exited almost immediately with status 0 instead of waiting
forever.


36588 02-Jun-1998 thepish

PR: bin/6828
Submitted by: njs3@doc.ic.ac.uk
Obtained from: NetBSD

Implement embedded variable expansion


36347 25-May-1998 steve

Add a graceful jumping off point with a new .error directive.

PR: 6720
Submitted by: Niall Smart <njs3@doc.ic.ac.uk>


35993 13-May-1998 jb

Fix broken (at least on alpha, but probably on i386 too) code which
is supposed to walk an arry of character pointers, not an array of
characters.


35968 12-May-1998 wosch

Some commands are shell builtins. Execute the builtins by the shell
and not directly by make(1).

PR: bin/6550
Submitted by: Theo de Raadt <deraadt@cvs.openbsd.org & wosch


35483 28-Apr-1998 imp

Use historically correct error message in some cases, optionally.


35464 26-Apr-1998 phk

When all transformation rules to or from a suffix disappeared, make tries
to free the suffix. I think, it is a very strange idea. (Or, maybe, it is a
POSIX requirement?) And it is done incorrectly. Apparently, it even don't
update the list of known suffixes (but it is an other bug).

PR: 4254, 4692, 4783
Reviewed by: phk
Submitted by: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>


31358 23-Nov-1997 jraynard

Cleanup: fix a few typos, fit ASCII output onto an 80-column terminal
and use a fixed font which actually exists.


29957 29-Sep-1997 imp

Add #include <stdlib.h> to pick up prototypes for getenv and friends.


28828 27-Aug-1997 jkh

Don't preferentially execute Makefiles in ${OBJDIR} - it just causes
confusion and suffering. Tested by "make world".
Submitted by: gibbs


28746 25-Aug-1997 fsmp

Make explicit '-B' option propigate to submakes.

No one has said this would be a bad thing, so given the dearth of comments
I decided to add it, as its an important step towards getting "make world"
'parallel-ized'.

Reviewed by: silence
Submitted by: nnd@itfs.nsk.su


28228 14-Aug-1997 fsmp

Better fix, as originally submitted by reporter.

Submitted by: N.Dudorov <nnd@itfs.nsk.su>


28191 14-Aug-1997 fsmp

Fix PR bin/4291: /usr/bin/make - inconsistent -j<n> flag parsing.

Submitted by: N.Dudorov <nnd@itfs.nsk.su>


27644 24-Jul-1997 charnier

Use err(3). Cosmetic in usage string.


25080 21-Apr-1997 phk

In these XXX MHz days, waiting 500ms for a process to do something is
really far too long. Let us try 100ms instead, if you have a PP200,
maybe that's even too long. This should speed up make -j# builds.
I wonder why SIGCHLD isn't used...


24360 29-Mar-1997 imp

compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.


23578 09-Mar-1997 wosch

Add reference to `PMake - A Tutorial'


23305 03-Mar-1997 wosch

Add enviroment variable MAKEOBJDIRPREFIX, still undocumented except
in bsd.obj.mk.


23006 22-Feb-1997 peter

Revert $FreeBSD$ to $Id$


21673 14-Jan-1997 jkh

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


19344 03-Nov-1996 steve

Add a .POSIX directive. When the first non-comment
line of a Makefile contains this directive, make(1)
will enter a POSIX 1003.2 compliant mode.

Submitted by: Joerg Wunsch <joerg@freebsd.org>


18877 12-Oct-1996 steve

Remove extraneous comment, fix second-level tabs (one
tab and four spaces), and return error message in *err
instead of calling Parse_Error.

Suggested by: Bruce Evans <bde@zeta.org.au>


18865 11-Oct-1996 steve

Removed extra $Id$ string.


18864 11-Oct-1996 steve

Reinstate '!=' fix by Bruce Evans. The original commit message from
parse.c(1.9) was:

revision 1.9
date: 1996/09/12 03:03:25; author: bde; state: Exp; lines: +7 -6
Fixed handling of `!=' assignment. Don't warn if the shell's output is
null, but warn if there was an error reading it.

Suggested by: Bruce Evans <bde@zeta.org.au>


18804 08-Oct-1996 steve

O' to be bitten by CVS. Cleanup after import
of Christos' version of make(1) and add Id's.

Set straight by: Bruce Evans and Peter Wemm :)


18765 06-Oct-1996 steve

This commit was generated by cvs2svn to compensate for changes in r18764,
which included commits to RCS files with non-trunk default branches.


18759 06-Oct-1996 steve

Clarify the rule used to determine the object
directory location.


18757 06-Oct-1996 peter

This commit was generated by cvs2svn to compensate for changes in r18756,
which included commits to RCS files with non-trunk default branches.


18751 06-Oct-1996 steve

Correct problem with traversing into PSD.doc directory,
these files are actually installed/built as part of
src/share/doc/psd/12.make. Oops. :)

Pointed out by: Peter Wemm and Bruce Evans


18749 06-Oct-1996 jkh

Correct merge bogon: You want to descend into PSD.doc for both `all' and
`install' cases or there's never anything made to install, and you blow
up in the install. :-)


18730 06-Oct-1996 steve

Merge in NetBSD's changes to make(1). Changes include:

- Add the .PHONY, .PARALLEL, and .WAIT directives
- Added the -B and -m commandline flags
- misc. man page cleanups
- numerous job-related enhancements
- removed unused header file (bit.h)
- add util.c for functions not found in other envs.
- and a few coordinated whitespace changes

Special thanks to Christos Zoulas <christos@netbsd.org>
for help in the merge. A 'diff -ur' between Net and
FreeBSD now only contains sccsid-related diffs. :)

Obtained from: NetBSD, christos@netbsd.org, and me


18718 05-Oct-1996 wosch

delete doubled words, e.g.: "the the" -> "the"


18492 25-Sep-1996 steve

Fix for PR# 1231, make(1) execution of ``.BEGIN'' does
not halt on error. Thanks to Wolfram for reminding me. ;)

Also remove a unnecessary test for c == '\n', since the
loop (in ParseSkipLine) will not terminate unless
c == '\n' || c == EOF, and the EOF case is already
explicted handled by a return statement.


18478 23-Sep-1996 steve

Be sure to remove any newlines encountered when
parsing the input file in ParseSkipLine(...).


18456 22-Sep-1996 steve

Fix for PR# 1095, make's continuation line handling buggy
when used with .elif. Additional fixes include:

- fix continuation line handling when using .for
- plug up a memory leak


18433 21-Sep-1996 steve

Fix for PR#1230, make ``.for'' loops iterate backwards.


18339 18-Sep-1996 swallace

Restore previous compatibility of ${.CURDIR}/obj.`uname -m` and
$(.CURDIR}/obj search while retaining compatability of new
prefix with cwd for the current source tree builds.
.TARGETOBJDIR has been removed from make and CANONICALOBJDIR set in
bsd.obj.mk

The builtin object directory searching is defined specifically as:

If MAKEOBJDIRPREFIX is defined, the search order is
${MAKEOBJDIRPREFIX}${.CURDIR}
${.CURDIR}

Else if MAKEOBJDIR is defined, the search order is
${MAKEOBJDIR}
${.CURDIR}

Otherwise, default to the search order
${.CURDIR}/obj.`uname -m`
$(.CURDIR}/obj
/usr/obj${.CURDIR}
${.CURDIR}

Reviewed by: bde


18255 12-Sep-1996 bde

Fixed handling of `!=' assignment. Don't warn if the shell's output is
null, but warn if there was an error reading it.


17970 31-Aug-1996 bde

Fixed a missing colon in `notyet' code.


17969 31-Aug-1996 bde

Listed all the environment variables (MACHINE and PWD were missing).
Documented PWD. MACHINE and MAKEOBJDIR are are still undocumented
except in main.c. I will be changing MAKEOBJDIR back to its old
behaviour so that the comment in main.c actually applies.

Removed irrelevant misformatted text about make's name being argv[0].


17259 23-Jul-1996 nate

'make' prints an extra leading `make: ' and extra trailing newline if
there is no target to make.

% make
make: make: no target to make.

%

Beause the function Punt() in main.c takes care of leading 'make:' and
trailing newline, so, there is no need to pass explicitly.

Submitted by: enami@ba2.so-net.or.jp
Obtained from: NetBSD GNATS


17193 17-Jul-1996 bde

Added a -V option to print make's idea of the value of a variable.

Submitted by: mark@linus.demon.co.uk (Mark Valentine)

Fixed bugs and inconsistencies in synopsis and usage message.


17142 12-Jul-1996 jkh

General -Wall warning cleanup, part I.
Submitted-By: Kent Vander Velden <graphix@iastate.edu>


16885 01-Jul-1996 jkh

Put back the $PWD override behavior of revision 1.4. The concensus
*seems* to be that it was the right thing to do.


16809 27-Jun-1996 jkh

Remove code which overrode the opinion of getcwd() with an often bogus
value for $PWD.


16663 24-Jun-1996 jkh

Bring in my changes for removing the pestilent obj links (unless you
really want them) from /usr/src. This is the final version of the
patches, incorporating the feedback I've received from -current.


15086 07-Apr-1996 joerg

Fix a typo.

Submitted by: tgm@netcom.com (Thomas G. McWilliams)


11997 01-Nov-1995 adam

Fix the :S modifier to substitute in each word of the variable, according
to the description in the manpage. g flag means "replace every occurence
in each word", and its absence means "replace first occurence in each word".
Previously, absence of the g flag was implemented to mean "replace first
occurence found in all words, and then stop replacing", which was incorrect.


10953 22-Sep-1995 phk

Stop using gnumalloc.


9298 24-Jun-1995 ache

Back out prev. NetBSD fix, it cause skipping some error constructions,
don't delete initial space from line instead


9297 24-Jun-1995 ache

Don't make error on ^<spaces>\n
Obtained from: NetBSD


9255 18-Jun-1995 ache

Fix parsing SYSV/GNU "include"


9254 18-Jun-1995 ache

NetBSD fixes: declare more prototypes, move .OPTIONAL in alphabet
order, prevent suffix rule, if direct or children dependances exists,
forget to free v->name in var.c
My fixes: fix famous ^\t\n bug, correct free order in str_end
Reviewed by: bde
Obtained from: NetBSD, me


9242 16-Jun-1995 ache

Allow additional parsing of SYSV/GNU make "include" directive, it covers
90% of problems in ports Makefiles


8874 30-May-1995 rgrimes

Remove trailing whitespace.


5814 23-Jan-1995 jkh

Bring in a number of changes from NetBSD's make, fixing quite a few
problems in the process:

1. Quoting should work properly now. In particular, Chet's reported bash
make problem has gone away.
2. A lot of memory that just wasn't being free'd after use is now freed.
This should cause make to take up a LOT less memory when dealing with
archive targets.
3. Give proper credit to Adam de Boor in a number of files.
Obtained from: NetBSD (and Adam de Boor)


2390 29-Aug-1994 dg

Use gnumalloc.


2266 24-Aug-1994 sef

Fix a problem with passing quoted strings down to commands.

Reviewed by: Sean Eric Fagan


1591 27-May-1994 rgrimes

This commit was generated by cvs2svn to compensate for changes in r1590,
which included commits to RCS files with non-trunk default branches.