OpenBSD CVS

CVS log for src/usr.bin/make/parse.c


[BACK] Up to [local] / src / usr.bin / make

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.136 / (download) - annotate - [select for diffs], Mon Sep 4 11:35:11 2023 UTC (8 months, 2 weeks ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4, HEAD
Changes since 1.135: +4 -8 lines
Diff to previous 1.135 (colored)

GC old code that was originally implemented to facilitate adoption by
other BSDs, which never happened, so make things simpler for further
development.

Ditches config.h entirely since it gets reduced to 2 defines.

okay tb@

Revision 1.135 / (download) - annotate - [select for diffs], Tue May 30 04:42:21 2023 UTC (11 months, 2 weeks ago) by espie
Branch: MAIN
Changes since 1.134: +2 -1 lines
Diff to previous 1.134 (colored)

Due to the way make is designed, not being able to read a makefile
is basically silent.

Record errors due to missing permissions and other oddities, and display them
when we error out due to lack of targets, as a quality-of-life diagnostic.

Based on a remark from sthen@, with some feedback and tweaks from op@

okay op@, kn@

Revision 1.134 / (download) - annotate - [select for diffs], Sat Mar 6 08:31:42 2021 UTC (3 years, 2 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2, OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9
Changes since 1.133: +6 -2 lines
Diff to previous 1.133 (colored)

put back Lst_Destroy(paths) where it belongs
noticed by jsg@

Revision 1.133 / (download) - annotate - [select for diffs], Mon Apr 20 08:17:33 2020 UTC (4 years ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7
Changes since 1.132: +5 -2 lines
Diff to previous 1.132 (colored)

in case there are several operators on a dependency line, prefer the
standard one (:) to the very BSD specific (!) so that standard Makefiles
keep working in the presence of ! in filenames.
This doesn't supersede the usual heuristics of choosing the operator
followed by space if several are present.

okay millert@

Revision 1.132 / (download) - annotate - [select for diffs], Sun Jan 26 12:41:21 2020 UTC (4 years, 3 months ago) by espie
Branch: MAIN
Changes since 1.131: +5 -5 lines
Diff to previous 1.131 (colored)

remove OP_* for deprecated keywords (document that :: still uses
OP_INVISIBLE)

okay millert@

Revision 1.131 / (download) - annotate - [select for diffs], Sun Jan 26 12:37:47 2020 UTC (4 years, 3 months ago) by espie
Branch: MAIN
Changes since 1.130: +20 -8 lines
Diff to previous 1.130 (colored)

deprecate old keywords, some already removed, some now hitting the bitbucket.
okay on principle from millert@/schwarze@
The rationale is that those aren't even documented (apart from .MADE) and
the corresponding code has never been maintained (just untouched when
changing other things, so it probably doesn't work right if it ever did)

This went through a full release/bulk to make sure nobody was using that stuff.

okay millert@

Revision 1.130 / (download) - annotate - [select for diffs], Mon Jan 13 14:51:50 2020 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.129: +2 -7 lines
Diff to previous 1.129 (colored)

simplify the way we account for different jobs:
- have a simple variable "sequential" that counts  whether we are
running more than one job (for the expensive heuristics)
- don't expose various things globally, just have a set_noparallel() for
the parser
- preallocate exactly enough job structures and record them in availableJobs
- keep one job on the side for .INTERRUPT

Revision 1.129 / (download) - annotate - [select for diffs], Mon Jan 13 14:07:35 2020 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.128: +42 -44 lines
Diff to previous 1.128 (colored)

concept borrowed from netbsd: turns out SPECIAL_SOURCE/TARGET is no longer
needed, because if we're special it's a target, if we have special_op,
it's a source.

There's just SPECIAL_WAIT which requires funny handling anyhow

Revision 1.128 / (download) - annotate - [select for diffs], Mon Jan 13 14:03:12 2020 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.127: +2 -2 lines
Diff to previous 1.127 (colored)

move documentation around to be more specific to suff.c
Rename Suff_ClearSuffixes to the more explicit Suff_DisableAllSuffixes
which describes accurately what this function actually does.

remove outdated comments about .INCLUDE/.LIBS

Revision 1.127 / (download) - annotate - [select for diffs], Mon Jan 13 13:59:24 2020 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.126: +16 -35 lines
Diff to previous 1.126 (colored)

a lot of special keywors (.INCLUDE/.LIBRARIES) were removed a few releases
ago. Document what's actually going on with special keywords (mostly .PATH
has special semantics) and document that SPECIAL_NOTHING corresponds to
ignoring former keywords.

Revision 1.126 / (download) - annotate - [select for diffs], Mon Jan 13 13:54:44 2020 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.125: +6 -8 lines
Diff to previous 1.125 (colored)

introduce a "Buf_Reinit" function for handling static buffers that can
be reused throughout running make.   Instead of recreating buffers of
dubious appropriate size, have one single buffer for various stages of
parsing.

Revision 1.125 / (download) - annotate - [select for diffs], Mon Jan 13 13:50:41 2020 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.124: +4 -5 lines
Diff to previous 1.124 (colored)

tweak special node creation to be simpler: nodes created for special keywords
are created exactly once, so they don't need to be looked up to check whether
they exist or not.

Go thru a Targ_mk_node internal with all the special fields, and note the
special nodes are the only one with special values in there

Revision 1.124 / (download) - annotate - [select for diffs], Mon Jan 13 13:48:20 2020 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.123: +3 -3 lines
Diff to previous 1.123 (colored)

document special values.
unconfuse type/special field
(first commit of a large patch that was ok'd tb@, millert@)

Revision 1.123 / (download) - annotate - [select for diffs], Sun Dec 22 16:53:40 2019 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.122: +64 -47 lines
Diff to previous 1.122 (colored)

- give a specific value to OP_ERROR that doesn't occur in nature
- define OP_ZERO as zero, to make some function calls obvious
- split ParseDoOp into two functions: ParseDoOp that only deals with : :: !
and ParseDoSpecial that only deals with special nodes. This simplifies both
functions accordingly
- always initialize special_op

okay millert@

Revision 1.122 / (download) - annotate - [select for diffs], Sat Dec 21 15:29:25 2019 UTC (4 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.121: +7 -8 lines
Diff to previous 1.121 (colored)

rename a few variable/functions to have better names.
adjust comments to be more meaningful
reorder predecessors/successors fields in an order that
makes more sense to me.

okay millert@

Revision 1.121 / (download) - annotate - [select for diffs], Thu Sep 20 11:41:28 2018 UTC (5 years, 7 months ago) by jsg
Branch: MAIN
CVS Tags: OPENBSD_6_6_BASE, OPENBSD_6_6, OPENBSD_6_5_BASE, OPENBSD_6_5, OPENBSD_6_4_BASE, OPENBSD_6_4
Changes since 1.120: +2 -2 lines
Diff to previous 1.120 (colored)

fix indentation
ok krw@ millert@

Revision 1.120 / (download) - annotate - [select for diffs], Tue Dec 19 20:44:53 2017 UTC (6 years, 5 months ago) by zhuk
Branch: MAIN
CVS Tags: OPENBSD_6_3_BASE, OPENBSD_6_3
Changes since 1.119: +2 -2 lines
Diff to previous 1.119 (colored)

More NUL (not NULL) checks.

With support from guenther@ and millert@; final okay espie@

Revision 1.119 / (download) - annotate - [select for diffs], Tue Dec 5 14:35:12 2017 UTC (6 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.118: +1 -2 lines
Diff to previous 1.118 (colored)

strip_comments is also called for dot lines, so sometimes the comment
is all the line.

problem reported by Sergey Bronnikov

Revision 1.118 / (download) - annotate - [select for diffs], Sun Oct 23 14:54:14 2016 UTC (7 years, 6 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_6_2_BASE, OPENBSD_6_2, OPENBSD_6_1_BASE, OPENBSD_6_1
Changes since 1.117: +2 -2 lines
Diff to previous 1.117 (colored)

add !!=
feedback and okay millert@

Revision 1.117 / (download) - annotate - [select for diffs], Fri Oct 21 16:12:38 2016 UTC (7 years, 6 months ago) by espie
Branch: MAIN
Changes since 1.116: +8 -9 lines
Diff to previous 1.116 (colored)

small obvious cleanups:
- remove a lot of unnecessary casts
- zap extra param that's no longer needed
- add proper prototype and make function static

okay natano@

Revision 1.116 / (download) - annotate - [select for diffs], Fri May 13 12:18:11 2016 UTC (8 years ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0
Changes since 1.115: +45 -33 lines
Diff to previous 1.115 (colored)

have sinclude/include be more compatible with sysv, handle list of files

small improvement and okay millert@

Revision 1.115 / (download) - annotate - [select for diffs], Tue Dec 22 21:50:54 2015 UTC (8 years, 4 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_5_9_BASE, OPENBSD_5_9
Changes since 1.114: +9 -3 lines
Diff to previous 1.114 (colored)

in case we have a parse error, dispell the target list early to avoid
various problems.

Problem noticed by jsg@, deeper patch than he suggested

okay jsg@ and tb@.

Revision 1.114 / (download) - annotate - [select for diffs], Sun Nov 29 09:17:12 2015 UTC (8 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.113: +66 -27 lines
Diff to previous 1.113 (colored)

fix duplicate targets in target list for good: split previous groupling fix
in two. Catch 22: we have to dedup targets very early so that commands get
attached correctly, but we can't figure out the grouplings heuristics until
we have all commands...

ok millert@

Revision 1.113 / (download) - annotate - [select for diffs], Fri Nov 6 18:41:02 2015 UTC (8 years, 6 months ago) by espie
Branch: MAIN
Changes since 1.112: +48 -6 lines
Diff to previous 1.112 (colored)

I was very optimistic in groupling creation. Turns out lists of targets
can have duplicates, or overlap, or even be empty thanks to fnmatch.

So use the big guns to build the circular list correctly, namely
actual lists of targets that are made together will be registered in a
hash first, then we recreate the full list from there.

(merging lists is not an issue, since groupling links are only used to
temporarily lock targets in parallel mode).

Issue noticed by guenther@, okay guenther@

Revision 1.112 / (download) - annotate - [select for diffs], Fri Jan 23 22:35:57 2015 UTC (9 years, 3 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_5_8_BASE, OPENBSD_5_8, OPENBSD_5_7_BASE, OPENBSD_5_7
Changes since 1.111: +2 -1 lines
Diff to previous 1.111 (colored)

a wee little bit more cleanup (more const and remove noise from CDIAGFLAGS...
-pedantic kind of requires -std=c99 here to avoid LL warnings)
okay miod@, millert@

Revision 1.111 / (download) - annotate - [select for diffs], Fri Jan 23 13:18:40 2015 UTC (9 years, 3 months ago) by espie
Branch: MAIN
Changes since 1.110: +5 -5 lines
Diff to previous 1.110 (colored)

remove a bunch of dangerous casts (useless casts from void * to something
else, in some cases by adding extra temporary variables.
IMO, it's much better practice to do

void *a;
int *p = a;
*p = 42;

rather than
void *a;
*(int *)a = 42;

okay miod@... to be revisited for some possible const additions later.

Revision 1.110 / (download) - annotate - [select for diffs], Fri Nov 22 15:47:35 2013 UTC (10 years, 5 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_5_6_BASE, OPENBSD_5_6, OPENBSD_5_5_BASE, OPENBSD_5_5
Changes since 1.109: +27 -27 lines
Diff to previous 1.109 (colored)

wrappers for is*/to* that make damn sure their arguments are
cast to unsigned chars.

okay deraadt@

Revision 1.109 / (download) - annotate - [select for diffs], Sat Nov 24 11:06:08 2012 UTC (11 years, 5 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_5_4_BASE, OPENBSD_5_4, OPENBSD_5_3_BASE, OPENBSD_5_3
Changes since 1.108: +3 -2 lines
Diff to previous 1.108 (colored)

complement "need an operator" fatal error message with the actual line content.
okay beck@

Revision 1.108 / (download) - annotate - [select for diffs], Wed Nov 7 14:18:41 2012 UTC (11 years, 6 months ago) by espie
Branch: MAIN
Changes since 1.107: +1 -2 lines
Diff to previous 1.107 (colored)

say goodbye to killing trailing spaces.
this was yet another weirdness in our make that isn't shared by
other makes, and that isn't part of any standard.
This means end-of-line spaces in variables ARE significant (spaces
around the equal sign still aren't).

okay sthen@, "sounds fine" deraadt@

Revision 1.107 / (download) - annotate - [select for diffs], Tue Oct 9 19:45:34 2012 UTC (11 years, 7 months ago) by espie
Branch: MAIN
Changes since 1.106: +82 -38 lines
Diff to previous 1.106 (colored)

- SPECIAL_DEPRECATED -> SPECIAL_NOTHING
- nodes for .POSIX and .SCCS_GET (which don't do anything)
- zap remaining suffix crud.

new scaffolding:
- groupling list and HELDBACK state to avoid races in engine.
- parser recognizes lists of targets that shoul be grouped together
- OP_DOUBLE to mark nodes that have multiple lists of commands

Revision 1.106 / (download) - annotate - [select for diffs], Tue Oct 2 10:29:31 2012 UTC (11 years, 7 months ago) by espie
Branch: MAIN
Changes since 1.105: +6 -76 lines
Diff to previous 1.105 (colored)

more changes, discussed and tested by various people.
- put back some job control, turns out it's necessary when we don't run a
shell.
- zap old #ifdef CLEANUP code... probably doesn't even compile.
- kill most of the OP_LIB code. Just keep a wee little bit for compatibility
(deprecated .LIBS and .INCLUDES, warns for weird dependencies instead of
erroring out).
- much improved debugging and -p output: sort variables, targets, rules,
output stuff in a nicer format mimicing input.
- better error message when no command is found, explain where the target comes from.
- sort final error list by file.
- show system files in errors as <bsd.prog.mk>
- reincorporate random delay, that was dropped
- optimize siginfo output by not regenerating the whole string each time.
- finish zapping old LocationInfo field that's no longer used.

Revision 1.105 / (download) - annotate - [select for diffs], Fri Sep 21 07:55:20 2012 UTC (11 years, 7 months ago) by espie
Branch: MAIN
Changes since 1.104: +28 -18 lines
Diff to previous 1.104 (colored)

major overhaul of the way make handle jobs, inspired by dpb:
instead of forking a "job" per target, and having that job further fork
separate commands, have make maintain a list of jobs, indexed by pid
of currently running commands, and handle process termination
continuation-style.  This has lots of benefits:
- make is responsible for most printing, so we no longer need pipes nor
job control: make -j jobs see the tty.
- no more special-casing for jobs that don't really execute anything.
- unify code for make -jn and make -B, including signal handlers and
job waiting.  So make -n, make -q, +cmd now run commands in the same
way in all cases.
- unified more accurate error-reporting, as make knows precisely which
command failed. Commands are tagged with their lines, and we display failing
commands in silent mode.
- fine-grained "expensive" command handling (recursion limiter). Do it
per-command instead of per-target.

Moreover, signal response is now simpler, as we just block the signals
in a small critical sections, test for events, and sigpause (thanks a lot
to guenther@ and millert@), so running make is now almost always paused
without any busy-waiting.

Thanks to everyone who tested and gave input.

Revision 1.104 / (download) - annotate - [select for diffs], Fri Apr 20 13:28:11 2012 UTC (12 years, 1 month ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_5_2_BASE, OPENBSD_5_2
Changes since 1.103: +3 -3 lines
Diff to previous 1.103 (colored)

dyslexy strikes again

Revision 1.103 / (download) - annotate - [select for diffs], Tue Apr 17 09:34:15 2012 UTC (12 years, 1 month ago) by espie
Branch: MAIN
Changes since 1.102: +28 -3 lines
Diff to previous 1.102 (colored)

this error message was impossible to understand without the source code.
be slightly more verbose and really explain what's going on.

okay millert@

Revision 1.102 / (download) - annotate - [select for diffs], Wed Apr 11 18:27:30 2012 UTC (12 years, 1 month ago) by espie
Branch: MAIN
Changes since 1.101: +5 -1 lines
Diff to previous 1.101 (colored)

make has had heuristics to avoid parallel make recursion.
Sometimes they mess up, so add .CHEAP/.EXPENSIVE to explicitly tell make
'hey this is not THAT bad' or 'worse than you think'.
agreed by guenther@, millert@ (and some tweaks)

Revision 1.101 / (download) - annotate - [select for diffs], Thu Mar 22 13:47:12 2012 UTC (12 years, 2 months ago) by espie
Branch: MAIN
Changes since 1.100: +3 -5 lines
Diff to previous 1.100 (colored)

minor cleanup: error messages include lineno and fileno together, so
recognize that and create a struct Location_ for it.

mostly from Jonathan Calmels, a few nits from me.

okay otto@

Revision 1.100 / (download) - annotate - [select for diffs], Sun Dec 26 13:09:22 2010 UTC (13 years, 4 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_5_1_BASE, OPENBSD_5_1, OPENBSD_5_0_BASE, OPENBSD_5_0, OPENBSD_4_9_BASE, OPENBSD_4_9
Changes since 1.99: +5 -3 lines
Diff to previous 1.99 (colored)

nits with current being NULL or not.
okay miod@

Revision 1.99 / (download) - annotate - [select for diffs], Mon Jul 19 19:46:44 2010 UTC (13 years, 10 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_4_8_BASE, OPENBSD_4_8
Changes since 1.98: +1 -2 lines
Diff to previous 1.98 (colored)

Correct $OpenBSD$ stuff

Revision 1.98 / (download) - annotate - [select for diffs], Thu Jul 15 10:41:11 2010 UTC (13 years, 10 months ago) by espie
Branch: MAIN
Changes since 1.97: +3 -3 lines
Diff to previous 1.97 (colored)

whitespace

Revision 1.97 / (download) - annotate - [select for diffs], Sun Aug 16 09:51:12 2009 UTC (14 years, 9 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_4_7_BASE, OPENBSD_4_7
Changes since 1.96: +41 -41 lines
Diff to previous 1.96 (colored)

use unsigned values where applicable

Revision 1.96 / (download) - annotate - [select for diffs], Sun May 10 11:52:09 2009 UTC (15 years ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_4_6_BASE, OPENBSD_4_6
Changes since 1.95: +9 -1 lines
Diff to previous 1.95 (colored)

simple check for cvs conflicts, avoids some "duh" moments (some people like
it, other don't care, it's cheap enough). Slightly tweaked patch that also
guards against empty arrays (though it's unlikely to happen, I don't feel
like proving the array is not empty).

Revision 1.95 / (download) - annotate - [select for diffs], Sun Sep 23 09:47:56 2007 UTC (16 years, 7 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_4_5_BASE, OPENBSD_4_5, OPENBSD_4_4_BASE, OPENBSD_4_4, OPENBSD_4_3_BASE, OPENBSD_4_3
Changes since 1.94: +33 -22 lines
Diff to previous 1.94 (colored)

put parsing of operator (:, ::, !) into its own function

Revision 1.94 / (download) - annotate - [select for diffs], Tue Sep 18 08:46:10 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.93: +87 -96 lines
Diff to previous 1.93 (colored)

reindent a few lines in parse.c which are missing it.

Revision 1.93 / (download) - annotate - [select for diffs], Tue Sep 18 08:24:56 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.92: +2 -1 lines
Diff to previous 1.92 (colored)

missing prototype for static function

Revision 1.92 / (download) - annotate - [select for diffs], Mon Sep 17 12:42:09 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.91: +602 -692 lines
Diff to previous 1.91 (colored)

rewrite of the basic suffix/target parsing: use hash for suffixes.

Store special targets in target hash, and use them for the parsing.

Use OP_DUMMY flag to mark targets that don't really exist yet, such
as interrupt and default nodes.

Also, .PATHxxx is special in suffixes.

Small tweaks to compat.c, so that run_commands does more stuff after
the fork() (and thus no need to free things).

Remove distinction between local and global jobs.

Revision 1.91 / (download) - annotate - [select for diffs], Mon Sep 17 11:32:25 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.90: +178 -160 lines
Diff to previous 1.90 (colored)

clean-up Parse_File toplevel: add functions to make it clearer what's going
on.

Start getting rid of globals by passing explicit parameters

Revision 1.90 / (download) - annotate - [select for diffs], Mon Sep 17 11:14:37 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.89: +2 -2 lines
Diff to previous 1.89 (colored)

Parse_DoVar -> Parse_As_Var_Assignment

Revision 1.89 / (download) - annotate - [select for diffs], Mon Sep 17 11:11:30 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.88: +13 -13 lines
Diff to previous 1.88 (colored)

parseIncPath -> userIncludePath and assorted renames

Revision 1.88 / (download) - annotate - [select for diffs], Mon Sep 17 09:45:37 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.87: +2 -2 lines
Diff to previous 1.87 (colored)

more zap spaces

Revision 1.87 / (download) - annotate - [select for diffs], Mon Sep 17 09:44:20 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.86: +2 -2 lines
Diff to previous 1.86 (colored)

zap more spaces at end of line

Revision 1.86 / (download) - annotate - [select for diffs], Mon Sep 17 09:38:49 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.85: +187 -183 lines
Diff to previous 1.85 (colored)

partial reindent

Revision 1.85 / (download) - annotate - [select for diffs], Mon Sep 17 09:28:36 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.84: +13 -13 lines
Diff to previous 1.84 (colored)

kill extra spaces at end of line

Revision 1.84 / (download) - annotate - [select for diffs], Mon Sep 17 08:36:57 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.83: +2 -2 lines
Diff to previous 1.83 (colored)

kill += 1, -= 1     -> ++, --

Revision 1.83 / (download) - annotate - [select for diffs], Sun Sep 16 12:30:35 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.82: +5 -5 lines
Diff to previous 1.82 (colored)

rename dirSearchPath -> defaultPath, and openDirectories -> knownDirectories

Revision 1.82 / (download) - annotate - [select for diffs], Sun Sep 16 10:57:02 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.81: +1 -9 lines
Diff to previous 1.81 (colored)

kill .SHELL, make doesn't even support it in non-parallel mode.

Revision 1.81 / (download) - annotate - [select for diffs], Sun Sep 16 10:14:26 2007 UTC (16 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.80: +2 -1 lines
Diff to previous 1.80 (colored)

cut up dir.c into dir.c/direxpand.c as there is very little interface between
two modules that do different things.

Revision 1.80 / (download) - annotate - [select for diffs], Sun Aug 5 11:00:58 2007 UTC (16 years, 9 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_4_2_BASE, OPENBSD_4_2
Changes since 1.79: +1 -1 lines
Diff to previous 1.79 (colored)

fix curly in targets... broke it and no-one saw the difference, so it's
probably not used that often.

Revision 1.79 / (download) - annotate - [select for diffs], Mon Jul 30 10:03:11 2007 UTC (16 years, 9 months ago) by espie
Branch: MAIN
Changes since 1.78: +271 -311 lines
Diff to previous 1.78 (colored)

introduce a Var_Substi to substitute on intervals.
Since we don't really know how to change Var_Subst and dependent functions,
we cheat, and copy the string to a buffer instead.

Clean-up the parser a bit: reorganize the include files lookup function:
introduce a resolve_include_filename function that figures out the full name
of the file, introduce a handle_include_file that does all the include file
handling, and rename the functions into handle_xxx_include, so that we
can remove most comments.

Rename ParseIsCond into handle_bsd_command, cut most of its code into
constituent functions.

Semantic changes:
- follow the rules that, if an optional construct does not parse correctly,
then it's not a real extension, and give the normal parser a chance to figure
it out. If the syntax checks out, semantic errors ARE real errors.
- allow variables to not be defined in include file names, no reason not to.

okay miod@

Revision 1.78 / (download) - annotate - [select for diffs], Mon Jul 30 09:51:53 2007 UTC (16 years, 9 months ago) by espie
Branch: MAIN
Changes since 1.77: +1 -1 lines
Diff to previous 1.77 (colored)

everywhere except in Var_Parse, we always add/append variables to the
VAR_GLOBAL context, so make it the common case: rename the basic functions
to Var_Set_with_ctxt/Var_Append_with_ctxt, define Var_Set and Var_Append
as macros that specify VAR_GLOBAL, and use these.

okay miod@

Revision 1.77 / (download) - annotate - [select for diffs], Mon Jul 30 09:32:02 2007 UTC (16 years, 9 months ago) by espie
Branch: MAIN
Changes since 1.76: +46 -37 lines
Diff to previous 1.76 (colored)

separate and name functions to add target nodes to the graph.

okay miod@

Revision 1.76 / (download) - annotate - [select for diffs], Tue Jul 24 18:58:48 2007 UTC (16 years, 9 months ago) by espie
Branch: MAIN
Changes since 1.75: +0 -0 lines
Diff to previous 1.75 (colored)

simplify computations in the var module: instead of advancing a char *
and keeping track of a length, we just advance the char *, and ditch
the length. We can still get the length at the end of the top-level
functions to satisfy existing interfaces.

Much simpler code, less error-prone.

Okay millert@

Revision 1.75 / (download) - annotate - [select for diffs], Tue Jul 24 18:56:15 2007 UTC (16 years, 9 months ago) by espie
Branch: MAIN
Changes since 1.74: +0 -0 lines
Diff to previous 1.74 (colored)

move the code that grabs a value in Var_Parse in its own function,
get_expanded_value.

Extend the code a bit to be much more thorough in case of a recursive
expansion: shows exactly the cycle of variable names involved.

okay millert@

Revision 1.74 / (download) - annotate - [select for diffs], Tue Jul 24 18:52:47 2007 UTC (16 years, 9 months ago) by espie
Branch: MAIN
Changes since 1.73: +1 -1 lines
Diff to previous 1.73 (colored)

change Var_ParseSkip API to increment the position instead of returning a
length, simplifies code.

(warns a bit, symptom of some further issues to fix).

okay millert@

Revision 1.73 / (download) - annotate - [select for diffs], Fri Jul 20 12:32:45 2007 UTC (16 years, 10 months ago) by espie
Branch: MAIN
Changes since 1.72: +2 -3 lines
Diff to previous 1.72 (colored)

big clean-up patch:
- rename a few functions in var.c to names that make more sense.
- introduce Var_Deletei because it makes more sense.
- rewrite .for loops to use a local LoopVar construct to avoid looking up more
stuff.
- reformat var.c to near K&R
- rewrite most comments in var.c

shown to a few people. millert@ gave me his okay since it passes through
ports correctly.

Revision 1.72 / (download) - annotate - [select for diffs], Sun Jul 8 17:44:20 2007 UTC (16 years, 10 months ago) by espie
Branch: MAIN
Changes since 1.71: +68 -2 lines
Diff to previous 1.71 (colored)

A set of big related changes. okay millert@, tested further by kettenis@
and matthieu@

This all revolves around putting ALL global variables into one single big
hash, and using flags. This removes some impossible to understand stuff,
like old varfind, and allows for some nice stuff.
- each time we reference a global variable, we create it, possibly as a dummy
variable.
- each time we go to the environment, we remember it, thus we no longer go
back to it.

Lists of dependant changes:
- isolate changes to oldVars and checkEnvFirst.
- remove VAR_CMD and VAR_GLOBAL contexts. The only distinction is in parsevar.
Split Parse_DoVar into Parse_DoVar and Parse_CmdlineVar
- rework var modules around obtain_global_var, observe flags in various
functions like Var_Value and Var_Seti.
- Var_Seti/Var_Appendi are almost the same code, use that internally.
- add magic to handle the very special SHELL variable.
- introduce Var_Definedi for the cases where we don't want the actual
value, to simplify tests.
- add keyword .poison, parse it and set global flags accordingly.
- do poison_checks where needed.
- document poison.
- in for loops, set variable temporarily, so that Var_SubstVar will also
substitute it in varmodifiers expressions.

Revision 1.71 / (download) - annotate - [select for diffs], Tue Mar 20 03:50:39 2007 UTC (17 years, 2 months ago) by tedu
Branch: MAIN
Changes since 1.70: +8 -8 lines
Diff to previous 1.70 (colored)

remove some bogus *p tests from charles longeau
ok deraadt millert

Revision 1.70 / (download) - annotate - [select for diffs], Thu Jan 18 17:49:51 2007 UTC (17 years, 4 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_4_1_BASE, OPENBSD_4_1
Changes since 1.69: +43 -26 lines
Diff to previous 1.69 (colored)

* add an extra argument to the dir lookup functions to say whether we
should look in the current directory.
* refactor include files treatment to have a separate function to look
for an include.
* use both pieces to make sure system includes do not get looked up
in the current directory unless everything else fails.

This is != from the netbsd solution to the same problem, which stuffs
`magic' entries into filepaths to say whether dot should be looked at
first or last.

feature requested by matthieu@.
okay matthieu@

Revision 1.69 / (download) - annotate - [select for diffs], Wed Apr 7 13:11:36 2004 UTC (20 years, 1 month ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_4_0_BASE, OPENBSD_4_0, OPENBSD_3_9_BASE, OPENBSD_3_9, OPENBSD_3_8_BASE, OPENBSD_3_8, OPENBSD_3_7_BASE, OPENBSD_3_7, OPENBSD_3_6_BASE, OPENBSD_3_6
Changes since 1.68: +38 -62 lines
Diff to previous 1.68 (colored)

ISO function declarations, trim a few comments, rename a few variables to
more explicit/more consistent names.

okay otto@

Revision 1.68 / (download) - annotate - [select for diffs], Tue Jun 3 02:56:12 2003 UTC (20 years, 11 months ago) by millert
Branch: MAIN
CVS Tags: OPENBSD_3_5_BASE, OPENBSD_3_5, OPENBSD_3_4_BASE, OPENBSD_3_4
Changes since 1.67: +2 -6 lines
Diff to previous 1.67 (colored)

Remove the advertising clause in the UCB license which Berkeley
rescinded 22 July 1999.  Proofed by myself and Theo.

Revision 1.67 / (download) - annotate - [select for diffs], Tue Jun 11 21:12:11 2002 UTC (21 years, 11 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_3_3_BASE, OPENBSD_3_3, OPENBSD_3_2_BASE, OPENBSD_3_2
Changes since 1.66: +26 -26 lines
Diff to previous 1.66 (colored)

This is the first step in sanitizing the conditional parser.

Change the conditional recognition algorithm:
scan for a sequence of alphabetic characters, hash it, and compare it against
a small table (using ohash functions).
This makes Cond_Eval entry more logical, and allows for some shortcuts in
recognizing .include, .for, .undef.

This also means that conditionals must have an intervening blank between
the keyword and the actual test, e.g.,
.ifA
will no longer work.

(but no-one actually uses this, and it's highly obfuscated)

Okay miod@.

Revision 1.66 / (download) - annotate - [select for diffs], Sun Nov 11 12:35:02 2001 UTC (22 years, 6 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_3_1_BASE, OPENBSD_3_1
Changes since 1.65: +4 -4 lines
Diff to previous 1.65 (colored)

Fixed version... don't see how this could work on i386, since it didn't
initialize create in main.c.

Revision 1.65 / (download) - annotate - [select for diffs], Sun Nov 11 06:02:06 2001 UTC (22 years, 6 months ago) by deraadt
Branch: MAIN
Changes since 1.64: +3 -3 lines
Diff to previous 1.64 (colored)

undo changes that crash on (at least) the alpha

Revision 1.64 / (download) - annotate - [select for diffs], Sun Nov 11 01:19:23 2001 UTC (22 years, 6 months ago) by espie
Branch: MAIN
Changes since 1.63: +4 -4 lines
Diff to previous 1.63 (colored)

Redo LstInit as a macro: smaller and faster code in all cases, zeroing two
pointers is simpler than calling a function.
Recognize purely static lst headers, which don't really need any
initialization.
ok miod@

Revision 1.63 / (download) - annotate - [select for diffs], Tue Jun 12 22:44:21 2001 UTC (22 years, 11 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_3_0_BASE, OPENBSD_3_0
Changes since 1.62: +66 -70 lines
Diff to previous 1.62 (colored)

Replace the most used static lists in make by persistent growable arrays.
5% speed increase on a make build.
ok miod@

Revision 1.62 / (download) - annotate - [select for diffs], Tue May 29 12:53:42 2001 UTC (22 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.61: +2 -1 lines
Diff to previous 1.61 (colored)

Take includes out of lst.h, re-add what's needed to separate files.
Removes remaining lint stuff from lst.lib.

Revision 1.61 / (download) - annotate - [select for diffs], Wed May 23 12:34:47 2001 UTC (23 years ago) by espie
Branch: MAIN
Changes since 1.60: +102 -414 lines
Diff to previous 1.60 (colored)

Mostly clean-up:
- cut up those huge include files into separate interfaces for all modules.
Put the interface documentation there, and not with the implementation.
- light-weight includes for needed concrete types (lst_t.h, timestamp_t.h).
- cut out some more logically separate parts: cmd_exec, varname, parsevar,
timestamp.
- put all error handling functions together, so that we will be able to
clean them up.
- more systematic naming: functioni  to handle interval, function to handle
string.
- put the init/end code apart to minimize coupling.
- kill weird types like ReturnStatus and Boolean. Use standard bool (with a
fallback for non-iso systems)
- better interface documentation for lots of subsystems.

As a result, make compilation goes somewhat faster (5%, even considering
the largish BSD copyrights to read). The corresponding preprocessed
source goes down from 1,5M to 1M.

A few minor code changes as well: Parse_DoVar is no longer destructive.
Parse_IsVar functionality is folded into Parse_DoVar (as it knows what an
assignment is), a few more interval handling functions. Avoid calling
XXX_End when they do nothing, just #define XXX_End   to nothing.

Parse_DoVar is slightly more general: it will handle compound assignments
as long as they make sense, e.g., VAR +!= cmd
will work.  As a side effect, VAR++=value now triggers an error
(two + in assignment).
- this stuff doesn't occur in portable Makefiles.
- writing VAR++ = value or VAR+ +=value  disambiguates it.
- this is a good thing, it uncovered a bug in bsd.port.mk.

Tested by naddy@. Okayed millert@. I'll handle the fallback if there is
any. This went through a full make build anyways, including isakmpd
(without mickey's custom binutils, as he didn't see fit to share it with me).

Revision 1.60 / (download) - annotate - [select for diffs], Tue May 15 12:52:15 2001 UTC (23 years ago) by espie
Branch: MAIN
Changes since 1.59: +7 -7 lines
Diff to previous 1.59 (colored)

thinko in my rewrite. Repair var:sh = something

Looks like nobody is using this anyways.

Revision 1.59 / (download) - annotate - [select for diffs], Thu May 3 13:41:08 2001 UTC (23 years ago) by espie
Branch: MAIN
Changes since 1.58: +683 -640 lines
Diff to previous 1.58 (colored)

Synch with my current work.
Numerous changes:
- generate can build several tables
- style cleanup
- statistics code
- use variable names throughout (struct Name)
- recursive variables everywhere
- faster parser (pass buffer along instead of allocating multiple copies)
- correct parser. Handles comments everywhere, and ; correctly
- more string intervals
- simplified dir.c, less recursion.
- extended for loops
- sinclude()
- finished removing extra junk from Lst_*
- handles ${@D} and friends in a simpler way
- cleaned up and modular VarModifiers handling.
- recognizes some gnu Makefile usages and errors out about them.

Additionally, some extra functionality is defined by FEATURES. The set of
functionalities is currently hardcoded to OpenBSD defaults, but this may
include support for some NetBSD extensions, like ODE modifiers.

Backed by miod@ and millert@, who finally got sick of my endless patches...

Revision 1.58 / (download) - annotate - [select for diffs], Fri Nov 24 14:27:20 2000 UTC (23 years, 5 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_2_9_BASE, OPENBSD_2_9
Changes since 1.57: +3 -3 lines
Diff to previous 1.57 (colored)

Clean-ups:
* Buf_Destroy can be a macro
* X_ instead of _X for struct names, to avoid infringing on the system's
namespace.
* better wildcard detection heuristics
* fix #ifdef CLEANUP code
* a few comments

Revision 1.57 / (download) - annotate - [select for diffs], Thu Sep 14 13:46:45 2000 UTC (23 years, 8 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_2_8_BASE, OPENBSD_2_8
Changes since 1.56: +4 -3 lines
Diff to previous 1.56 (colored)

Replace the old hash used to hold file names within a directory with
open hashing.

An interesting optimization is that the open hashing interface is more
fine-grained, hence we can compute the correct hash value at the start
of Dir_FindFile, and reuse it for each hash structure into which we look
(the effect is measurable on large directories along with objdir/VPATH).

Remove a few unnecessary Lst_Open/Lst_Close that serve no purpose except
obfuscating the code.

The interface to dir.h changes slightly, hence tedious includes changes...

Revision 1.56 / (download) - annotate - [select for diffs], Thu Sep 14 13:43:31 2000 UTC (23 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.55: +4 -4 lines
Diff to previous 1.55 (colored)

- new DirReadDir internal function, that just reads a directory from
the disk or from a cache.
- use it in Dir_AddDir, and directly to set up dot.
- change Dir_AddDir to use string intervals, as this simplifies
dependend functions.
- set up an open-hashing cache for opened directory names.
- add_dirpath() function in main, to simplify code.
- simplify cleaning-up directories, as Dir_ClearPath is overkill.

Revision 1.55 / (download) - annotate - [select for diffs], Thu Sep 14 13:40:03 2000 UTC (23 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.54: +4 -4 lines
Diff to previous 1.54 (colored)

Use the new hash scheme to store the target nodes.
Scrap the list of all targets: it only slows make down.
The only visible difference is that the list of all targets is not
shown in order when debugging.

Revision 1.54 / (download) - annotate - [select for diffs], Thu Sep 14 13:36:46 2000 UTC (23 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.53: +7 -8 lines
Diff to previous 1.53 (colored)

Clean-up, systematic use of UNUSED, white space...

Revision 1.53 / (download) - annotate - [select for diffs], Thu Sep 14 13:32:07 2000 UTC (23 years, 8 months ago) by espie
Branch: MAIN
Changes since 1.52: +10 -10 lines
Diff to previous 1.52 (colored)

Some systematic clean-up.
- UNUSED macro that expands to __attribute__((unused)) for gcc
- move rcsid around so that they can be tagged UNUSED.
- activate -Wunused.
- use UNUSED instead of kludgy junk for function arguments.
- add extern to all extern prototypes.
- update comments in lst.h.
- clean up var.c a little bit, constifying arguments, updating comments...

Revision 1.52 / (download) - annotate - [select for diffs], Fri Jun 23 16:41:53 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.51: +3 -3 lines
Diff to previous 1.51 (colored)

This patch replaces str_concat with a slightly unobfuscated version.

In particular, Dir_MakeFlags is abusing str_concat, and works much better
with buffers.

Revision 1.51 / (download) - annotate - [select for diffs], Fri Jun 23 16:40:50 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.50: +2 -318 lines
Diff to previous 1.50 (colored)

This is complementary to the previous patch.

There is no code change in this patch, we just move the remaining
`lowparse' functions to the right file, and adjust the interface file
accordingly.

Reviewed by miod@

Revision 1.50 / (download) - annotate - [select for diffs], Fri Jun 23 16:39:45 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.49: +106 -560 lines
Diff to previous 1.49 (colored)

This patch is worth a lot, speed-wise.

This does introduce a proper stack of IFiles to handle included files:
instead of having the current file be a special case, it's also an IFile.

The corresponding code is slightly unobfuscated, removing the error-prone
ParseEOF function, freeing the filename systematically (thus, main.c needs
to strdup stdin), and merging both include functions lookup into one.

The speed gain comes from changing the IFile structure to merge with
fgetln seamlessly.

The low-level parse code is mostly moved to a new file, lowparse.c, to
make things easier to read (see next patch as well).

Accordingly, util.c gains a fgetln.

Note the interaction between Parse_File, Dir_FindFile, and ReadMakefile in
main.c. This patch closes a subtle memory hole (only the Makefile names,
so rather small).

Reviewed by miod@.

Revision 1.49 / (download) - annotate - [select for diffs], Fri Jun 23 16:23:26 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.48: +4 -4 lines
Diff to previous 1.48 (colored)

This patch separates local contexts from global contexts for good.
Apart from a few casts, VAR_GLOBAL and friends are separate
data structures, so we use a small array for local variables.

We also junk allVars, since TargFreeGN can release local nodes,
and var.c has explicit lists for its variables already.

Reviewed millert@ and miod@.

Revision 1.48 / (download) - annotate - [select for diffs], Fri Jun 23 16:21:43 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.47: +9 -9 lines
Diff to previous 1.47 (colored)

In various places, VAR_CMD is used to actually mean `no real context',
since lookup will start with VAR_CMD in any case.
This fixes VarFind and Var_Parse to handle ctxt == NULL correctly, and
replace those confusing VAR_CMD with proper NULL pointers.

This patch also handles three small details:
- .CURDIR is necessarily set in VAR_GLOBAL,
- suffix handling for archives copies two hard-coded variables, for
which it can use a quick path,
- typos in TargFreeGN.

Reviewed millert@, miod@.

Revision 1.47 / (download) - annotate - [select for diffs], Fri Jun 23 16:20:01 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.46: +3 -3 lines
Diff to previous 1.46 (colored)

Once those special variable are taken care of, other Var functions can take
the GNode's context directly.  We rename that special Lst to `SymTable *'
in prevision of things to come.

Along the line, we lose the special GNodes affected to VAR_CMD, VAR_GLOBAL,
VAR_ENV, which become simple Lsts... This is not a problem, except when
getting to a context's name for debugging (handled very nicely by
offsetof).

Again, this is a preparatory patch, which does not gain anything except
for cleaning up issues...

Reviewed by millert@ and miod@, like the previous patch

Revision 1.46 / (download) - annotate - [select for diffs], Fri Jun 23 16:15:50 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.45: +3 -3 lines
Diff to previous 1.45 (colored)

Trivial consequences of the previous list changes:

- audit code for Lst_Datum, it's never applied to an empty pointer,
so check can be removed -> turn into a macro,
- Lst_First, Lst_Last can become macro as well
- specialized version of Lst_Succ (Lst_Adv) to use in loops where it cannot
fail,
- Lst_Open can no longer fail. Trim down corresponding code.

Reviewed millert@, miod@

Revision 1.45 / (download) - annotate - [select for diffs], Sat Jun 17 14:43:36 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.44: +37 -47 lines
Diff to previous 1.44 (colored)

This removes the few instances of Lst_New left.
- replaces Lst_Duplicate with Lst_Clone, which does not allocate storage
- split Lst_Concat into Lst_Concat/Lst_ConcatDestroy
Thus, all the LstValid checks are gone, since we always invoke list
functions with valid pointers.

Note that dynamic list allocation accounted for roughly 20% of all calls
to malloc.  The extraneous calls to malloc left are now mostly in parse.c,
which makes some wasteful usage of temporary buffers.

With those few patches, the code is sturdier, and easier to maintain.

Reviewed by millert@

Revision 1.44 / (download) - annotate - [select for diffs], Sat Jun 17 14:40:29 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.43: +8 -14 lines
Diff to previous 1.43 (colored)

A few assorted changes, to remove more dynamic lists.
- in Dir_Expand, path is a misnomer. Use a temp variable instead...
Reformat code for readability.
- Change Parse_MainName/Targ_FindList so that they fill arguments instead
of allocating new lists.
- nuke Targ_FindList(TG_NOCREATE), as this is never used.

- close a small memory hole (forgot to free sysMkPath if CLEANUP).

Reviewed by millert@

Revision 1.43 / (download) - annotate - [select for diffs], Sat Jun 17 14:38:18 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.42: +90 -100 lines
Diff to previous 1.42 (colored)

This patch introduces a distinction between
Lst_Init (constructor) and Lst_New (allocation + construction)
Lst_Destroy (destructor) and Lst_Delete (deallocation + destruction),
and uses that to turn most dynamic allocation of lists (Lst pointers)
into static structures (LIST).

Most of this is mundane, except for allGNs in targ.c, where the code must
be checked to verify that Targ_Init is called soon enough.

Lst_New is a temporary addition. All lists will soon be static.

Reviewed by millert@, like the previous patch.

Revision 1.42 / (download) - annotate - [select for diffs], Sat Jun 10 01:41:06 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.41: +29 -29 lines
Diff to previous 1.41 (colored)

Clean-up patch: use `void *' instead of old-fashioned ClientData/Address.

Revision 1.41 / (download) - annotate - [select for diffs], Sat Jun 10 01:32:23 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.40: +25 -46 lines
Diff to previous 1.40 (colored)

Thus, Lst_ForEach no longer needs returning a status.
In fact, it can become a macro based on Lst_ForEachFrom.
This also introduces Lst_Every, as a shortcut for the very common case where
Lst_ForEach does not need any user data.

Finally,  make consistent use of a few function typedefs, instead of having
explicit void (*)(Lst)  arguments all over the place.

Revision 1.40 / (download) - annotate - [select for diffs], Sat Jun 10 01:26:37 2000 UTC (23 years, 11 months ago) by espie
Branch: MAIN
Changes since 1.39: +19 -21 lines
Diff to previous 1.39 (colored)

Lst_Find and Lst_ForEach do the same thing, except that the comparison
sense is reversed (Lst_Find  returns when proc says 0, whereas Lst_ForEach
goes on while proc says 0).

This patch turns a number of Lst_ForEach into Lst_Find.
Specifically, all Lst_ForEach that actually may return quickly as proc
does not always returns zero.

Of course, the corresponding proc need to be tweaked to swap 0 and 1...

Revision 1.39 / (download) - annotate - [select for diffs], Mon Apr 17 23:54:47 2000 UTC (24 years, 1 month ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_2_7_BASE, OPENBSD_2_7
Changes since 1.38: +6 -1 lines
Diff to previous 1.38 (colored)

Record location in target node as well.
Indicate what went wrong for commands like
	@exit 1

Revision 1.38 / (download) - annotate - [select for diffs], Mon Apr 17 23:45:24 2000 UTC (24 years, 1 month ago) by espie
Branch: MAIN
Changes since 1.37: +24 -5 lines
Diff to previous 1.37 (colored)

Don't free Makefile filenames when the file is finished reading, but
keep them for error reporting.

Revision 1.37 / (download) - annotate - [select for diffs], Sun Mar 26 16:21:32 2000 UTC (24 years, 1 month ago) by espie
Branch: MAIN
Changes since 1.36: +36 -36 lines
Diff to previous 1.36 (colored)

Remove idiotic, braindead casts T* -> void*
They serve no purpose, except hiding potential bugs.

In particular, remove (ClientData) cast from macro, showing potentially
troublesome use of Hashes to store time_t.

Revision 1.36 / (download) - annotate - [select for diffs], Sat Jan 8 09:45:15 2000 UTC (24 years, 4 months ago) by espie
Branch: MAIN
Changes since 1.35: +3 -3 lines
Diff to previous 1.35 (colored)

Finish changing all Var_Parse arguments to size_t. Thanks to millert@
for reminding me.

Revision 1.35 / (download) - annotate - [select for diffs], Sat Dec 18 21:58:07 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.34: +23 -23 lines
Diff to previous 1.34 (colored)

Nothing ever checks ReturnStatus on Lst_Insert, Lst_Append, Lst_AtFront,
Lst_AtEnd, Lst_Concat, Lst_Remove, Lst_Replace.

Don't bother returning one.

Revision 1.34 / (download) - annotate - [select for diffs], Sat Dec 18 21:56:07 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.33: +9 -14 lines
Diff to previous 1.33 (colored)

Lst_DeQueue already checks for empty lists.

Revision 1.33 / (download) - annotate - [select for diffs], Sat Dec 18 21:53:32 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.32: +13 -13 lines
Diff to previous 1.32 (colored)

NIL, NILGNODE, etc, are only glorified NULL.
Get rid of them.

Get rid of list.h, nothing uses it anyway.

Revision 1.32 / (download) - annotate - [select for diffs], Sat Dec 18 02:11:27 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.31: +14 -14 lines
Diff to previous 1.31 (colored)

make does not use circular lists, get rid of the extra weight.

Revision 1.31 / (download) - annotate - [select for diffs], Thu Dec 16 17:27:18 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.30: +7 -7 lines
Diff to previous 1.30 (colored)

Var_Subst is actually two distinct functions folded into one:
split the function specific to for.c out, and give them more sensible
arguments at the same time.

This makes .for loop handling more efficient, as we have some heuristic
to evaluate the size of the buffer needed...

Revision 1.30 / (download) - annotate - [select for diffs], Thu Dec 16 17:07:21 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.29: +16 -14 lines
Diff to previous 1.29 (colored)

for.c becomes sane.
- split For_Eval into For_Eval (first line of loop) / For_Accumulate
(remaining lines).
- encapsulate state into a For structure, instead of brain damaged static
variables that need copy.

Very minor performance hit, specifically, For structure is allocated with
malloc/free, instead of playing tricks with static/auto variables.

Revision 1.29 / (download) - annotate - [select for diffs], Thu Dec 16 17:02:45 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.28: +15 -17 lines
Diff to previous 1.28 (colored)

Allocate buffers as static data structures.
This cuts down quite a lot of malloc, since in actual use,
buffer usage is mostly static.

Revision 1.28 / (download) - annotate - [select for diffs], Thu Dec 16 16:52:11 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.27: +3 -6 lines
Diff to previous 1.27 (colored)

Remove unneeded extraneous zeros at the end of buffers.

Actually, one of these needs to be there, because of two bugs in cond.c

Revision 1.27 / (download) - annotate - [select for diffs], Thu Dec 16 16:41:42 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.26: +4 -4 lines
Diff to previous 1.26 (colored)

Split Buf_GetAll into Buf_Retrieve/Buf_Size.
(idiotic to retrieve size every time when it's used half the time)

Revision 1.26 / (download) - annotate - [select for diffs], Thu Dec 16 16:27:12 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.25: +4 -5 lines
Diff to previous 1.25 (colored)

Start cleaning up buf.c in earnest.

- Buf_Discard is only used to remove all the bytes in a buffer,
replace with Buf_Reset,
- buffer values are not read unless accessed first through Buf_GetAll,
no need to null-terminate it at every point.
- Buf_Expand need not check if the expansion is needed. That's Buf_AddChar
and Buf_AddChars responsability (otherwise, Buf_AddChar checks twice)
- Buf_Overflow only handles overflow. Adding the character is done in
every case anyway.

Revision 1.25 / (download) - annotate - [select for diffs], Mon Dec 6 22:24:31 1999 UTC (24 years, 5 months ago) by espie
Branch: MAIN
Changes since 1.24: +13 -13 lines
Diff to previous 1.24 (colored)

Clean up buffers interface somewhat:

- buf.c deals exclusively with chars. Be explicit about it, and remove
extraneous dumb casts to char (can hide real type errors).
- buffer sizes are size_t. Note that bp->left can never become NULL.
- Buf_GetAll is happy with a NULL pointer for the size, remove unneeded
extra pointers.
- Propagate size_t to all places where buffer functions are used.

Revision 1.24 / (download) - annotate - [select for diffs], Thu Nov 11 11:42:19 1999 UTC (24 years, 6 months ago) by espie
Branch: MAIN
Changes since 1.23: +15 -7 lines
Diff to previous 1.23 (colored)

Communicate line numbers between parse.c and for.c.
Parse_String starts in the current line, but at a given line number.

.for loops yield correct line numbers, much easier to debug !

Revision 1.23 / (download) - annotate - [select for diffs], Thu Nov 11 11:40:09 1999 UTC (24 years, 6 months ago) by espie
Branch: MAIN
Changes since 1.22: +13 -13 lines
Diff to previous 1.22 (colored)

Lineno as unsigned long. Slightly easier for printf, and more sensible.

Revision 1.22 / (download) - annotate - [select for diffs], Wed Nov 10 14:00:54 1999 UTC (24 years, 6 months ago) by espie
Branch: MAIN
Changes since 1.21: +13 -7 lines
Diff to previous 1.21 (colored)

Make ParseSkipLine more regular:
perform the exit tests before checking for EOF.

This makes behavior while scanning tests more regular.
e.g,

.if defined(UVM) && ${UVM} == "yes"
...
.endif

without a final newline at the endif should always work,
instead of being an error half the time...

Revision 1.21 / (download) - annotate - [select for diffs], Tue Oct 5 22:08:07 1999 UTC (24 years, 7 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_2_6_BASE, OPENBSD_2_6
Changes since 1.20: +4 -4 lines
Diff to previous 1.20 (colored)

Mark ParseReadC as inline (from NetBSD)

Revision 1.20 / (download) - annotate - [select for diffs], Tue Oct 5 22:06:24 1999 UTC (24 years, 7 months ago) by espie
Branch: MAIN
Changes since 1.19: +10 -2 lines
Diff to previous 1.19 (colored)

Efficiency patch from NetBSD:
make spends time freeing data structures right before exiting.
So don't bother.
Keep the code inside #ifdef, so that it's still there if someone
ever wants to use make code inside a library.

Revision 1.19 / (download) - annotate - [select for diffs], Tue May 4 16:44:45 1999 UTC (25 years ago) by millert
Branch: MAIN
Changes since 1.18: +14 -5 lines
Diff to previous 1.18 (colored)

Better comment explaining last change:
We don't want to end a word on ':' or '!' if there is a better match
later on in the string.  By "better" I mean one that is followed
by whitespace.  This allows the user to have targets like: fie::fi:fo: fum
where "fie::fi:fo" is the target.  In real life this is used
for perl5 library man pages where "::" separates an object from its
class.  Ie: "File::Spec::Unix".  This behaviour is also consistent
with other versions of make.

Revision 1.18 / (download) - annotate - [select for diffs], Tue May 4 16:09:25 1999 UTC (25 years ago) by millert
Branch: MAIN
Changes since 1.17: +19 -5 lines
Diff to previous 1.17 (colored)

Allow embedded ":" or "!" in target names

Revision 1.17 / (download) - annotate - [select for diffs], Sat Dec 5 00:06:29 1998 UTC (25 years, 5 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_2_5_BASE, OPENBSD_2_5
Changes since 1.16: +81 -11 lines
Diff to previous 1.16 (colored)

Modifications from netbsd:
- don't interfere with MACHINE/MACHINE_ARCH defines for bootstrap
- type clean-up, time_t, and printing `unknown' ints
- fix TARGET/MEMBER bug in archive rules
- memmove...
- cleaner Error handler.
- reentrant brk_string
- .MAKE env variable
- preliminary scaffolding for .NOPATH

Other improvements:
- efree
- shellneed streamlined
- display Stop in .CURDIR after an error.
- document most features and misfeatures.
- add a few OpenBSD notes to the tutorial.

Revision 1.16 / (download) - annotate - [select for diffs], Thu Jul 2 20:47:26 1998 UTC (25 years, 10 months ago) by millert
Branch: MAIN
CVS Tags: OPENBSD_2_4_BASE, OPENBSD_2_4
Changes since 1.15: +4 -3 lines
Diff to previous 1.15 (colored)

Fix a bug where make gets confused by targets beginning with a period (``.'')
and tried to do a suffix conversion, following a NULL pointer in the
proccess.  Also add some sanity checks so we don't blindly assume
strchr returns non-NULL.

Revision 1.15 / (download) - annotate - [select for diffs], Fri Jul 25 21:05:35 1997 UTC (26 years, 10 months ago) by mickey
Branch: MAIN
CVS Tags: OPENBSD_2_3_BASE, OPENBSD_2_3, OPENBSD_2_2_BASE, OPENBSD_2_2
Changes since 1.14: +5 -5 lines
Diff to previous 1.14 (colored)

#if __STDC__ --> #ifdef __STDC__

Revision 1.14 / (download) - annotate - [select for diffs], Mon Apr 28 01:52:40 1997 UTC (27 years ago) by millert
Branch: MAIN
CVS Tags: OPENBSD_2_1_BASE, OPENBSD_2_1
Changes since 1.13: +8 -8 lines
Diff to previous 1.13 (colored)

Back out newer .USE code as it caused problems.  I've done a "make build"
without problems and the problem Theo saw before is gone.

Revision 1.13 / (download) - annotate - [select for diffs], Tue Apr 1 07:28:21 1997 UTC (27 years, 1 month ago) by millert
Branch: MAIN
Changes since 1.12: +11 -10 lines
Diff to previous 1.12 (colored)

Sync with NetBSD (mostly by christos initial substitution/regexp from Der Mouse)

- fix the variable substitution code in make [PR/2748]
      1. change s/a/b/ so that it substitutes the first occurance of the
         pattern on each word, not only the first word.
      2. add flag '1' to the variable substitution so that the substitutions
         get performed only once.

  ***THIS IS AN INCOMPATIBLE CHANGE!***

  Unfortunately there was no way to make things consistent without
  modifying the current behavior. Fortunately none of our Makefiles
  depended on this.

            OLD:

                VAR      = aa1 aa2 aa3 aa4

                S/a/b/   = ba1 aa2 aa3 aa4
                S/a/b/g  = bb1 bb2 bb3 bb4

            NEW:
                VAR      = aa1 aa2 aa3 aa4

                S/a/b/   = ba1 ba2 ba3 ba4
                S/a/b/1  = ba1 aa2 aa3 aa4
                S/a/b/g  = bb1 bb2 bb3 bb4
                S/a/b/1g = bb1 aa2 aa3 aa4
- add regexp variable substitution via 'C/foo/bar/' [PR/2752]
- add variable quoting via the ${VAR:Q} modifier. This is useful when running
  recursive invocations of make(1):

        make VAR=${VAR:Q}

  will always work... (This may prove useful in the kernel builds...) [PR/2981]
- BSD did not traditionally have <sys/cdefs.h>; use BSD4_4 instead and include
  <sys/param.h> to grab it.
- Don't compile the regex code if MAKE_BOOTSTRAP (from gwr)
- Use explicit .c.o rule in Makefile.boot so that the bootstrap process works.
- Use only integral types in procedure arguments. [buf.c buf.h]
- Include <stdlib.h> to get getenv() prototype on SVR4
- if __STDC__ -> ifdef __STDC__ to appease SVR4
- Define const and volatile for non __STDC__
- Implement snprintf() and vsnprintf() for non BSD4_4 systems.
- Make $MACHINE_ARCH settable from the environment.
- Fix .USE directive problems: (reported by cgd)
    1. ${.*} variables did not get expanded in dependencies.
    2. expanded ${.*} variables in .USE dependencies can cause tree
       restructuring; handle it.
    3. in compat mode, expand .USE before evaluating the list of targets,
       instead of doing .USE expansions on demand, because they can cause
       tree restructuring.
- Add a .MADE directive to indicated that the children of a target are
  up-to-date, even when they are not. This is to simulate our current
  make install behavior with proper dependencies.
- Fix problems in the RE substitution error handling.
- Locate all the children of a node marked as MADE.
- Do not compile-in ${MACHINE} (as per NetBSD PR#3386)
- Disable globbing for targets/dependencies when POSIX is defined.
- Fix globbing so that patterns that don't have a matching number of [] or {}
  don't get expanded. (before the [ case got expanded to nothing!) This is
  disabled.
- Make sure that the children of nodes that are marked .MADE, are marked
  UPTODATE and their timestamps are consistent.
- Don't disable wildcards completely; they are used by other Makefiles.

Revision 1.12 / (download) - annotate - [select for diffs], Wed Mar 26 17:46:44 1997 UTC (27 years, 2 months ago) by deraadt
Branch: MAIN
Changes since 1.11: +8 -8 lines
Diff to previous 1.11 (colored)

s/main/listmain/; seebs@solon.com

Revision 1.11 / (download) - annotate - [select for diffs], Sat Nov 30 21:09:02 1996 UTC (27 years, 5 months ago) by millert
Branch: MAIN
Changes since 1.10: +102 -121 lines
Diff to previous 1.10 (colored)

Sync with NetBSD:
- Merge in FreeBSD and Lite2 changes.
- Fix bug where a non-archive target with a .a suffix would always
  be considered to be out of date, since it does not have a TOC.
- Fix NetBSD PR #2930: declare missing variable.

Revision 1.10 / (download) - annotate - [select for diffs], Sat Sep 21 05:03:37 1996 UTC (27 years, 8 months ago) by briggs
Branch: MAIN
CVS Tags: OPENBSD_2_0_BASE, OPENBSD_2_0
Changes since 1.9: +15 -8 lines
Diff to previous 1.9 (colored)

From NetBSD (christos):
- Fix bug where the first line after a conditionally skipped was not ready
  in its entirety if it contained a continuation.
- Print the whole error line, not just the first 20 characters of it.

Revision 1.9 / (download) - annotate - [select for diffs], Mon Sep 2 16:04:17 1996 UTC (27 years, 8 months ago) by briggs
Branch: MAIN
Changes since 1.8: +49 -148 lines
Diff to previous 1.8 (colored)

Sync up with NetBSD:
(christos)
	Fix bug reported by Greg Hudson where leaf (source only) nodes were
	referenced only by their basename and not by their full pathname. This
	breaks when .PATH or MAKEOBJDIR are used. There might be Makefiles
	around that try to work around this bug by prepending ${.CURDIR} to
	the sources, and they should be found and fixed. Also a lot of the gunk
	in suff.c that was attempting to work around the same problem could be
	removed.
(christos)
	- Move -D flags from Makefile to config.h and explain what they do. Add
	  -Wall -Wno-unused to CFLAGS. Add new define SYSVVARSUB to enable SysV
	  style variable substitutions and enable them.
	- Add SunOS style command substitutions via SUNSHCMD
	- Fix core dump with '{variable = value'
(christos)
	Fix bug where make will always exit with 0, even when one or more
	parallel jobs failed. (Only affects parallel make code)
(christos)
	Protect __P from being multiply defined (for systems that already
	define it)
(christos) Add strdup() since ultrix is missing it.
	From Larry Schwimmer <rosebud@cyclone.Stanford.EDU>
(christos) Add estrdup(), a checked version of strdup and use it.
(christos) Recognize SVR4 style long filename entries in archives.
(thorpej) Tidy up some RCS ids a bit.

Revision 1.8 / (download) - annotate - [select for diffs], Tue Jul 23 18:37:12 1996 UTC (27 years, 10 months ago) by deraadt
Branch: MAIN
Changes since 1.7: +1 -1 lines
Diff to previous 1.7 (colored)

nicer error message; netbsd pr#2651; enami@ba2.so-net.or.jp

Revision 1.7 / (download) - annotate - [select for diffs], Wed Mar 27 19:32:41 1996 UTC (28 years, 1 month ago) by niklas
Branch: MAIN
Changes since 1.6: +6 -2 lines
Diff to previous 1.6 (colored)

From NetBSD: merge of 960317

Revision 1.6 / (download) - annotate - [select for diffs], Sat Mar 2 19:50:48 1996 UTC (28 years, 2 months ago) by tholo
Branch: MAIN
Changes since 1.5: +1 -0 lines
Diff to previous 1.5 (colored)

Make sure SYSV-style include directives are only matched when there is a
whitespace character after the word "include"

Revision 1.5 / (download) - annotate - [select for diffs], Fri Feb 23 18:32:58 1996 UTC (28 years, 3 months ago) by niklas
Branch: MAIN
Changes since 1.4: +0 -19 lines
Diff to previous 1.4 (colored)

Implement an -m option used for replacing /usr/share/mk with a
custom search path, like $DESTDIR/usr/share/mk

Revision 1.4 / (download) - annotate - [select for diffs], Thu Feb 22 22:24:51 1996 UTC (28 years, 3 months ago) by niklas
Branch: MAIN
Changes since 1.3: +9 -5 lines
Diff to previous 1.3 (colored)

From NetBSD:
Support SVR4 style archives.
Fix pr/1421 (from Matthew Green) and pr/1997 (from Jeff Thieleke).
In ParseDoInclude(), make a temporary copy of the current file name
while searching for ""-type include files, since the current file name
might not be a writeable string.

Revision 1.3 / (download) - annotate - [select for diffs], Sun Dec 17 13:42:02 1995 UTC (28 years, 5 months ago) by deraadt
Branch: MAIN
Changes since 1.2: +89 -16 lines
Diff to previous 1.2 (colored)

from christos:
- Added .WAIT to synchronize between sources like other pmake variants.
- Updated documentation to include .ORDER .PARALLEL .NO_PARALLEL .NONPARALLEL

Revision 1.2 / (download) - annotate - [select for diffs], Thu Dec 14 03:23:36 1995 UTC (28 years, 5 months ago) by deraadt
Branch: MAIN
Changes since 1.1: +7 -3 lines
Diff to previous 1.1 (colored)

from christos@netbsd:
Minor:
    - ${.PREFIX} should never contain a full pathname
    - Fixed gcc -Wall warnings
Major:
    - compatMake is now FALSE. This means that we are now running in
      full pmake mode:
          * rules on dependency lines can be executed in parallel and or
            out of sequence:

            foo: bar baz

            can fire the rule for baz before the rule for bar is fired.
            To enforce bar to be fired before baz, another rule needs to be
            added. [bar: baz]
          * adjacent shell commands in a target are now executed by a single
            invocation of the shell, not one invocation of the shell per line
      (compatMake can be turned off using the -B flag)
    - The -j flag now works... I.e. make -j 4 will fork up to four jobs in
      parallel when it can. The target name is printed before each burst
      of output caused by the target execution as '--- target ---', when j > 1
    - I have changed all the Makefiles so that they work with make -j N, and
      I have tested the whole netbsd by:
          'make -j 4 cleandir; make -j 4 depend; make -j 4; make -j 4 install'
    - I have not compiled or tested this version of make with -DREMOTE.
- Turn compat mode on by default. It gets turned off when the -j without
  the -B flag is specified. [Thus you can use -j 1 to turn it off].
- Fix malloc -> emalloc as Gordon noted.
Updates for POSIX/SVR4 compiling:
arch.c:          Don't require ranlib stuff. Not everybody has it.
dir.c:           SunOS-4 != Solaris; change #ifdef sun to #if sun && !__svr4__
job.c, compat.c: Don't use 'union wait', use int and the W*() macros.
main.c:          Check for uname() == -1; some unames return > 0...
util.c, job.c:   Add signal() with BSD semantics for svr4, don't use bsd
                 sigmask and friends.

from cgd@netbsd:
pull in make.h.  (PAlloc() now uses emalloc(), which is prototyped in
make.h.  If the prototype is not in scope on the Alpha, I see lots
of "cast to pointer from integer of different size" warnings.)

Revision 1.1.1.1 / (download) - annotate - [select for diffs] (vendor branch), Wed Oct 18 08:45:43 1995 UTC (28 years, 7 months ago) by deraadt
CVS Tags: netbsd_1_1
Changes since 1.1: +0 -0 lines
Diff to previous 1.1 (colored)

initial import of NetBSD tree

Revision 1.1 / (download) - annotate - [select for diffs], Wed Oct 18 08:45:43 1995 UTC (28 years, 7 months ago) by deraadt
Branch: MAIN

Initial revision

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.